mirror of
https://github.com/aljazceru/ark.git
synced 2025-12-18 20:54:20 +01:00
Add endpoint to fetch pubkey & Require wallet already unlocked when starting the service (#43)
* Add endpoint to fetch pubkey & simplify ports.Wallet * Lint
This commit is contained in:
committed by
GitHub
parent
376d62f44b
commit
7bcdff0d2a
@@ -203,6 +203,28 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/v1/pubkey": {
|
||||||
|
"get": {
|
||||||
|
"operationId": "ArkService_GetPubkey",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "A successful response.",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/v1GetPubkeyResponse"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"description": "An unexpected error response.",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/rpcStatus"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"ArkService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"/v1/round/{txid}": {
|
"/v1/round/{txid}": {
|
||||||
"get": {
|
"get": {
|
||||||
"operationId": "ArkService_GetRound",
|
"operationId": "ArkService_GetRound",
|
||||||
@@ -343,6 +365,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"v1GetPubkeyResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"pubkey": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"v1GetRoundResponse": {
|
"v1GetRoundResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|||||||
@@ -48,6 +48,11 @@ service ArkService {
|
|||||||
get: "/v1/vtxos/{address}"
|
get: "/v1/vtxos/{address}"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
rpc GetPubkey(GetPubkeyRequest) returns (GetPubkeyResponse) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
get: "/v1/pubkey"
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message RegisterPaymentRequest {
|
message RegisterPaymentRequest {
|
||||||
@@ -150,3 +155,8 @@ message Vtxo {
|
|||||||
bool spent = 3;
|
bool spent = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message GetPubkeyRequest {}
|
||||||
|
|
||||||
|
message GetPubkeyResponse {
|
||||||
|
string pubkey = 1;
|
||||||
|
}
|
||||||
@@ -1220,6 +1220,91 @@ func (x *Vtxo) GetSpent() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GetPubkeyRequest struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetPubkeyRequest) Reset() {
|
||||||
|
*x = GetPubkeyRequest{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_ark_v1_service_proto_msgTypes[23]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetPubkeyRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*GetPubkeyRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *GetPubkeyRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_ark_v1_service_proto_msgTypes[23]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use GetPubkeyRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*GetPubkeyRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_ark_v1_service_proto_rawDescGZIP(), []int{23}
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetPubkeyResponse struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetPubkeyResponse) Reset() {
|
||||||
|
*x = GetPubkeyResponse{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_ark_v1_service_proto_msgTypes[24]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetPubkeyResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*GetPubkeyResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *GetPubkeyResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_ark_v1_service_proto_msgTypes[24]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use GetPubkeyResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*GetPubkeyResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_ark_v1_service_proto_rawDescGZIP(), []int{24}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GetPubkeyResponse) GetPubkey() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Pubkey
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
var File_ark_v1_service_proto protoreflect.FileDescriptor
|
var File_ark_v1_service_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_ark_v1_service_proto_rawDesc = []byte{
|
var file_ark_v1_service_proto_rawDesc = []byte{
|
||||||
@@ -1329,68 +1414,77 @@ var file_ark_v1_service_proto_rawDesc = []byte{
|
|||||||
0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x72,
|
0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x72,
|
||||||
0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x08, 0x72, 0x65, 0x63,
|
0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x08, 0x72, 0x65, 0x63,
|
||||||
0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x18, 0x03,
|
0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x18, 0x03,
|
||||||
0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x32, 0xa7, 0x06, 0x0a, 0x0a,
|
0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x47,
|
||||||
0x41, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x73, 0x0a, 0x0f, 0x52, 0x65,
|
0x65, 0x74, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22,
|
||||||
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e,
|
0x2b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70,
|
||||||
0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50,
|
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01,
|
||||||
0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e,
|
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x32, 0xfd, 0x06, 0x0a,
|
||||||
0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50,
|
0x0a, 0x41, 0x72, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x73, 0x0a, 0x0f, 0x52,
|
||||||
0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f,
|
0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e,
|
||||||
0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x70,
|
0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
|
||||||
0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12,
|
0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f,
|
||||||
0x67, 0x0a, 0x0c, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12,
|
0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
|
||||||
0x1b, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61,
|
0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
|
||||||
0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61,
|
0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f,
|
||||||
0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61, 0x79, 0x6d, 0x65,
|
0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
|
||||||
0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93,
|
0x12, 0x67, 0x0a, 0x0c, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74,
|
||||||
0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x79, 0x6d, 0x65,
|
0x12, 0x1b, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50,
|
||||||
0x6e, 0x74, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x73, 0x0a, 0x0f, 0x46, 0x69, 0x6e, 0x61,
|
0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e,
|
||||||
0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x61, 0x72,
|
0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x50, 0x61, 0x79, 0x6d,
|
||||||
0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x79,
|
0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4,
|
||||||
0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x72,
|
0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x79, 0x6d,
|
||||||
0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x79,
|
0x65, 0x6e, 0x74, 0x2f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x73, 0x0a, 0x0f, 0x46, 0x69, 0x6e,
|
||||||
0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3,
|
0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x61,
|
||||||
0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x79,
|
0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61,
|
||||||
0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, 0x57, 0x0a,
|
0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61,
|
||||||
0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x17, 0x2e, 0x61, 0x72, 0x6b, 0x2e,
|
0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x50, 0x61,
|
||||||
0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82,
|
||||||
0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52,
|
0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61,
|
||||||
0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3,
|
0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, 0x57,
|
||||||
0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2f,
|
0x0a, 0x08, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x17, 0x2e, 0x61, 0x72, 0x6b,
|
||||||
0x7b, 0x74, 0x78, 0x69, 0x64, 0x7d, 0x12, 0x65, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65,
|
0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75,
|
||||||
0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1d, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76,
|
0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
|
||||||
|
0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82,
|
||||||
|
0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x75, 0x6e, 0x64,
|
||||||
|
0x2f, 0x7b, 0x74, 0x78, 0x69, 0x64, 0x7d, 0x12, 0x65, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x45, 0x76,
|
||||||
|
0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1d, 0x2e, 0x61, 0x72, 0x6b, 0x2e,
|
||||||
|
0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61,
|
||||||
|
0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76,
|
||||||
0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
|
0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
|
||||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31,
|
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c,
|
||||||
0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52,
|
0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x30, 0x01, 0x12, 0x50,
|
||||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12,
|
0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x13, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e,
|
||||||
0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x30, 0x01, 0x12, 0x50, 0x0a,
|
0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x72,
|
||||||
0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x13, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x50,
|
0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||||
0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x61, 0x72, 0x6b,
|
0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x70,
|
||||||
0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
0x69, 0x6e, 0x67, 0x2f, 0x7b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d,
|
||||||
0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69,
|
0x12, 0x55, 0x0a, 0x06, 0x46, 0x61, 0x75, 0x63, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x61, 0x72, 0x6b,
|
||||||
0x6e, 0x67, 0x2f, 0x7b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12,
|
0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x63, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
0x55, 0x0a, 0x06, 0x46, 0x61, 0x75, 0x63, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x61, 0x72, 0x6b, 0x2e,
|
0x74, 0x1a, 0x16, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x63, 0x65,
|
||||||
0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x63, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02,
|
||||||
0x1a, 0x16, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x75, 0x63, 0x65, 0x74,
|
0x16, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x61, 0x75, 0x63, 0x65, 0x74, 0x2f, 0x7b, 0x61,
|
||||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16,
|
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x5d, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56,
|
||||||
0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x61, 0x75, 0x63, 0x65, 0x74, 0x2f, 0x7b, 0x61, 0x64,
|
0x74, 0x78, 0x6f, 0x73, 0x12, 0x18, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
|
||||||
0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x5d, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x74,
|
0x73, 0x74, 0x56, 0x74, 0x78, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19,
|
||||||
0x78, 0x6f, 0x73, 0x12, 0x18, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
|
0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x74, 0x78, 0x6f,
|
||||||
0x74, 0x56, 0x74, 0x78, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e,
|
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02,
|
||||||
0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x74, 0x78, 0x6f, 0x73,
|
0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x74, 0x78, 0x6f, 0x73, 0x2f, 0x7b, 0x61, 0x64,
|
||||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15,
|
0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x54, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62,
|
||||||
0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x74, 0x78, 0x6f, 0x73, 0x2f, 0x7b, 0x61, 0x64, 0x64,
|
0x6b, 0x65, 0x79, 0x12, 0x18, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
|
||||||
0x72, 0x65, 0x73, 0x73, 0x7d, 0x42, 0x92, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x72,
|
0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e,
|
||||||
0x6b, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
|
0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79,
|
||||||
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
|
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c,
|
||||||
0x2f, 0x61, 0x72, 0x6b, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x72, 0x6b,
|
0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x42, 0x92, 0x01, 0x0a,
|
||||||
0x2f, 0x61, 0x70, 0x69, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x72, 0x6b, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72,
|
||||||
0x75, 0x66, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x72, 0x6b, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x72,
|
0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74,
|
||||||
0x6b, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x41, 0x72, 0x6b, 0x2e,
|
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x6b, 0x2d, 0x6e, 0x65, 0x74, 0x77,
|
||||||
0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x72, 0x6b, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x72,
|
0x6f, 0x72, 0x6b, 0x2f, 0x61, 0x72, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2d, 0x73, 0x70, 0x65, 0x63,
|
||||||
0x6b, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x72,
|
||||||
0xea, 0x02, 0x07, 0x41, 0x72, 0x6b, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
|
0x6b, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x72, 0x6b, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58,
|
||||||
0x6f, 0x33,
|
0xaa, 0x02, 0x06, 0x41, 0x72, 0x6b, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x41, 0x72, 0x6b, 0x5c,
|
||||||
|
0x56, 0x31, 0xe2, 0x02, 0x12, 0x41, 0x72, 0x6b, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d,
|
||||||
|
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x41, 0x72, 0x6b, 0x3a, 0x3a, 0x56,
|
||||||
|
0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -1405,7 +1499,7 @@ func file_ark_v1_service_proto_rawDescGZIP() []byte {
|
|||||||
return file_ark_v1_service_proto_rawDescData
|
return file_ark_v1_service_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_ark_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
|
var file_ark_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
|
||||||
var file_ark_v1_service_proto_goTypes = []interface{}{
|
var file_ark_v1_service_proto_goTypes = []interface{}{
|
||||||
(*RegisterPaymentRequest)(nil), // 0: ark.v1.RegisterPaymentRequest
|
(*RegisterPaymentRequest)(nil), // 0: ark.v1.RegisterPaymentRequest
|
||||||
(*RegisterPaymentResponse)(nil), // 1: ark.v1.RegisterPaymentResponse
|
(*RegisterPaymentResponse)(nil), // 1: ark.v1.RegisterPaymentResponse
|
||||||
@@ -1430,13 +1524,15 @@ var file_ark_v1_service_proto_goTypes = []interface{}{
|
|||||||
(*ListVtxosRequest)(nil), // 20: ark.v1.ListVtxosRequest
|
(*ListVtxosRequest)(nil), // 20: ark.v1.ListVtxosRequest
|
||||||
(*ListVtxosResponse)(nil), // 21: ark.v1.ListVtxosResponse
|
(*ListVtxosResponse)(nil), // 21: ark.v1.ListVtxosResponse
|
||||||
(*Vtxo)(nil), // 22: ark.v1.Vtxo
|
(*Vtxo)(nil), // 22: ark.v1.Vtxo
|
||||||
nil, // 23: ark.v1.RoundFinalizationEvent.ForfeitTxsEntry
|
(*GetPubkeyRequest)(nil), // 23: ark.v1.GetPubkeyRequest
|
||||||
|
(*GetPubkeyResponse)(nil), // 24: ark.v1.GetPubkeyResponse
|
||||||
|
nil, // 25: ark.v1.RoundFinalizationEvent.ForfeitTxsEntry
|
||||||
}
|
}
|
||||||
var file_ark_v1_service_proto_depIdxs = []int32{
|
var file_ark_v1_service_proto_depIdxs = []int32{
|
||||||
9, // 0: ark.v1.RegisterPaymentRequest.inputs:type_name -> ark.v1.Input
|
9, // 0: ark.v1.RegisterPaymentRequest.inputs:type_name -> ark.v1.Input
|
||||||
10, // 1: ark.v1.ClaimPaymentRequest.outputs:type_name -> ark.v1.Output
|
10, // 1: ark.v1.ClaimPaymentRequest.outputs:type_name -> ark.v1.Output
|
||||||
8, // 2: ark.v1.GetRoundResponse.round:type_name -> ark.v1.Round
|
8, // 2: ark.v1.GetRoundResponse.round:type_name -> ark.v1.Round
|
||||||
23, // 3: ark.v1.RoundFinalizationEvent.forfeit_txs:type_name -> ark.v1.RoundFinalizationEvent.ForfeitTxsEntry
|
25, // 3: ark.v1.RoundFinalizationEvent.forfeit_txs:type_name -> ark.v1.RoundFinalizationEvent.ForfeitTxsEntry
|
||||||
11, // 4: ark.v1.GetEventStreamResponse.round_finalization:type_name -> ark.v1.RoundFinalizationEvent
|
11, // 4: ark.v1.GetEventStreamResponse.round_finalization:type_name -> ark.v1.RoundFinalizationEvent
|
||||||
12, // 5: ark.v1.GetEventStreamResponse.round_finalized:type_name -> ark.v1.RoundFinalizedEvent
|
12, // 5: ark.v1.GetEventStreamResponse.round_finalized:type_name -> ark.v1.RoundFinalizedEvent
|
||||||
13, // 6: ark.v1.GetEventStreamResponse.round_failed:type_name -> ark.v1.RoundFailed
|
13, // 6: ark.v1.GetEventStreamResponse.round_failed:type_name -> ark.v1.RoundFailed
|
||||||
@@ -1451,16 +1547,18 @@ var file_ark_v1_service_proto_depIdxs = []int32{
|
|||||||
16, // 15: ark.v1.ArkService.Ping:input_type -> ark.v1.PingRequest
|
16, // 15: ark.v1.ArkService.Ping:input_type -> ark.v1.PingRequest
|
||||||
18, // 16: ark.v1.ArkService.Faucet:input_type -> ark.v1.FaucetRequest
|
18, // 16: ark.v1.ArkService.Faucet:input_type -> ark.v1.FaucetRequest
|
||||||
20, // 17: ark.v1.ArkService.ListVtxos:input_type -> ark.v1.ListVtxosRequest
|
20, // 17: ark.v1.ArkService.ListVtxos:input_type -> ark.v1.ListVtxosRequest
|
||||||
1, // 18: ark.v1.ArkService.RegisterPayment:output_type -> ark.v1.RegisterPaymentResponse
|
23, // 18: ark.v1.ArkService.GetPubkey:input_type -> ark.v1.GetPubkeyRequest
|
||||||
3, // 19: ark.v1.ArkService.ClaimPayment:output_type -> ark.v1.ClaimPaymentResponse
|
1, // 19: ark.v1.ArkService.RegisterPayment:output_type -> ark.v1.RegisterPaymentResponse
|
||||||
5, // 20: ark.v1.ArkService.FinalizePayment:output_type -> ark.v1.FinalizePaymentResponse
|
3, // 20: ark.v1.ArkService.ClaimPayment:output_type -> ark.v1.ClaimPaymentResponse
|
||||||
7, // 21: ark.v1.ArkService.GetRound:output_type -> ark.v1.GetRoundResponse
|
5, // 21: ark.v1.ArkService.FinalizePayment:output_type -> ark.v1.FinalizePaymentResponse
|
||||||
15, // 22: ark.v1.ArkService.GetEventStream:output_type -> ark.v1.GetEventStreamResponse
|
7, // 22: ark.v1.ArkService.GetRound:output_type -> ark.v1.GetRoundResponse
|
||||||
17, // 23: ark.v1.ArkService.Ping:output_type -> ark.v1.PingResponse
|
15, // 23: ark.v1.ArkService.GetEventStream:output_type -> ark.v1.GetEventStreamResponse
|
||||||
19, // 24: ark.v1.ArkService.Faucet:output_type -> ark.v1.FaucetResponse
|
17, // 24: ark.v1.ArkService.Ping:output_type -> ark.v1.PingResponse
|
||||||
21, // 25: ark.v1.ArkService.ListVtxos:output_type -> ark.v1.ListVtxosResponse
|
19, // 25: ark.v1.ArkService.Faucet:output_type -> ark.v1.FaucetResponse
|
||||||
18, // [18:26] is the sub-list for method output_type
|
21, // 26: ark.v1.ArkService.ListVtxos:output_type -> ark.v1.ListVtxosResponse
|
||||||
10, // [10:18] is the sub-list for method input_type
|
24, // 27: ark.v1.ArkService.GetPubkey:output_type -> ark.v1.GetPubkeyResponse
|
||||||
|
19, // [19:28] is the sub-list for method output_type
|
||||||
|
10, // [10:19] is the sub-list for method input_type
|
||||||
10, // [10:10] is the sub-list for extension type_name
|
10, // [10:10] is the sub-list for extension type_name
|
||||||
10, // [10:10] is the sub-list for extension extendee
|
10, // [10:10] is the sub-list for extension extendee
|
||||||
0, // [0:10] is the sub-list for field type_name
|
0, // [0:10] is the sub-list for field type_name
|
||||||
@@ -1748,6 +1846,30 @@ func file_ark_v1_service_proto_init() {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
file_ark_v1_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*GetPubkeyRequest); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_ark_v1_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*GetPubkeyResponse); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
file_ark_v1_service_proto_msgTypes[15].OneofWrappers = []interface{}{
|
file_ark_v1_service_proto_msgTypes[15].OneofWrappers = []interface{}{
|
||||||
(*GetEventStreamResponse_RoundFinalization)(nil),
|
(*GetEventStreamResponse_RoundFinalization)(nil),
|
||||||
@@ -1760,7 +1882,7 @@ func file_ark_v1_service_proto_init() {
|
|||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_ark_v1_service_proto_rawDesc,
|
RawDescriptor: file_ark_v1_service_proto_rawDesc,
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 24,
|
NumMessages: 26,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 1,
|
NumServices: 1,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -358,6 +358,24 @@ func local_request_ArkService_ListVtxos_0(ctx context.Context, marshaler runtime
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func request_ArkService_GetPubkey_0(ctx context.Context, marshaler runtime.Marshaler, client ArkServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq GetPubkeyRequest
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
msg, err := client.GetPubkey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func local_request_ArkService_GetPubkey_0(ctx context.Context, marshaler runtime.Marshaler, server ArkServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq GetPubkeyRequest
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
msg, err := server.GetPubkey(ctx, &protoReq)
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// RegisterArkServiceHandlerServer registers the http handlers for service ArkService to "mux".
|
// RegisterArkServiceHandlerServer registers the http handlers for service ArkService to "mux".
|
||||||
// UnaryRPC :call ArkServiceServer directly.
|
// UnaryRPC :call ArkServiceServer directly.
|
||||||
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
|
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
|
||||||
@@ -532,6 +550,29 @@ func RegisterArkServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
mux.Handle("GET", pattern_ArkService_GetPubkey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(req.Context())
|
||||||
|
defer cancel()
|
||||||
|
var stream runtime.ServerTransportStream
|
||||||
|
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/ark.v1.ArkService/GetPubkey", runtime.WithHTTPPathPattern("/v1/pubkey"))
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := local_request_ArkService_GetPubkey_0(rctx, inboundMarshaler, server, req, pathParams)
|
||||||
|
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ArkService_GetPubkey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -733,6 +774,26 @@ func RegisterArkServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
mux.Handle("GET", pattern_ArkService_GetPubkey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(req.Context())
|
||||||
|
defer cancel()
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req, "/ark.v1.ArkService/GetPubkey", runtime.WithHTTPPathPattern("/v1/pubkey"))
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ArkService_GetPubkey_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ArkService_GetPubkey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -752,6 +813,8 @@ var (
|
|||||||
pattern_ArkService_Faucet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "faucet", "address"}, ""))
|
pattern_ArkService_Faucet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "faucet", "address"}, ""))
|
||||||
|
|
||||||
pattern_ArkService_ListVtxos_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "vtxos", "address"}, ""))
|
pattern_ArkService_ListVtxos_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "vtxos", "address"}, ""))
|
||||||
|
|
||||||
|
pattern_ArkService_GetPubkey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "pubkey"}, ""))
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -770,4 +833,6 @@ var (
|
|||||||
forward_ArkService_Faucet_0 = runtime.ForwardResponseMessage
|
forward_ArkService_Faucet_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
forward_ArkService_ListVtxos_0 = runtime.ForwardResponseMessage
|
forward_ArkService_ListVtxos_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ArkService_GetPubkey_0 = runtime.ForwardResponseMessage
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ type ArkServiceClient interface {
|
|||||||
Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error)
|
Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error)
|
||||||
Faucet(ctx context.Context, in *FaucetRequest, opts ...grpc.CallOption) (*FaucetResponse, error)
|
Faucet(ctx context.Context, in *FaucetRequest, opts ...grpc.CallOption) (*FaucetResponse, error)
|
||||||
ListVtxos(ctx context.Context, in *ListVtxosRequest, opts ...grpc.CallOption) (*ListVtxosResponse, error)
|
ListVtxos(ctx context.Context, in *ListVtxosRequest, opts ...grpc.CallOption) (*ListVtxosResponse, error)
|
||||||
|
GetPubkey(ctx context.Context, in *GetPubkeyRequest, opts ...grpc.CallOption) (*GetPubkeyResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type arkServiceClient struct {
|
type arkServiceClient struct {
|
||||||
@@ -131,6 +132,15 @@ func (c *arkServiceClient) ListVtxos(ctx context.Context, in *ListVtxosRequest,
|
|||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *arkServiceClient) GetPubkey(ctx context.Context, in *GetPubkeyRequest, opts ...grpc.CallOption) (*GetPubkeyResponse, error) {
|
||||||
|
out := new(GetPubkeyResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/ark.v1.ArkService/GetPubkey", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
// ArkServiceServer is the server API for ArkService service.
|
// ArkServiceServer is the server API for ArkService service.
|
||||||
// All implementations should embed UnimplementedArkServiceServer
|
// All implementations should embed UnimplementedArkServiceServer
|
||||||
// for forward compatibility
|
// for forward compatibility
|
||||||
@@ -143,6 +153,7 @@ type ArkServiceServer interface {
|
|||||||
Ping(context.Context, *PingRequest) (*PingResponse, error)
|
Ping(context.Context, *PingRequest) (*PingResponse, error)
|
||||||
Faucet(context.Context, *FaucetRequest) (*FaucetResponse, error)
|
Faucet(context.Context, *FaucetRequest) (*FaucetResponse, error)
|
||||||
ListVtxos(context.Context, *ListVtxosRequest) (*ListVtxosResponse, error)
|
ListVtxos(context.Context, *ListVtxosRequest) (*ListVtxosResponse, error)
|
||||||
|
GetPubkey(context.Context, *GetPubkeyRequest) (*GetPubkeyResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnimplementedArkServiceServer should be embedded to have forward compatible implementations.
|
// UnimplementedArkServiceServer should be embedded to have forward compatible implementations.
|
||||||
@@ -173,6 +184,9 @@ func (UnimplementedArkServiceServer) Faucet(context.Context, *FaucetRequest) (*F
|
|||||||
func (UnimplementedArkServiceServer) ListVtxos(context.Context, *ListVtxosRequest) (*ListVtxosResponse, error) {
|
func (UnimplementedArkServiceServer) ListVtxos(context.Context, *ListVtxosRequest) (*ListVtxosResponse, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method ListVtxos not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method ListVtxos not implemented")
|
||||||
}
|
}
|
||||||
|
func (UnimplementedArkServiceServer) GetPubkey(context.Context, *GetPubkeyRequest) (*GetPubkeyResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method GetPubkey not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
// UnsafeArkServiceServer may be embedded to opt out of forward compatibility for this service.
|
// UnsafeArkServiceServer may be embedded to opt out of forward compatibility for this service.
|
||||||
// Use of this interface is not recommended, as added methods to ArkServiceServer will
|
// Use of this interface is not recommended, as added methods to ArkServiceServer will
|
||||||
@@ -332,6 +346,24 @@ func _ArkService_ListVtxos_Handler(srv interface{}, ctx context.Context, dec fun
|
|||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func _ArkService_GetPubkey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(GetPubkeyRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ArkServiceServer).GetPubkey(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/ark.v1.ArkService/GetPubkey",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ArkServiceServer).GetPubkey(ctx, req.(*GetPubkeyRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
// ArkService_ServiceDesc is the grpc.ServiceDesc for ArkService service.
|
// ArkService_ServiceDesc is the grpc.ServiceDesc for ArkService service.
|
||||||
// It's only intended for direct use with grpc.RegisterService,
|
// It's only intended for direct use with grpc.RegisterService,
|
||||||
// and not to be introspected or modified (even as a copy)
|
// and not to be introspected or modified (even as a copy)
|
||||||
@@ -367,6 +399,10 @@ var ArkService_ServiceDesc = grpc.ServiceDesc{
|
|||||||
MethodName: "ListVtxos",
|
MethodName: "ListVtxos",
|
||||||
Handler: _ArkService_ListVtxos_Handler,
|
Handler: _ArkService_ListVtxos_Handler,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
MethodName: "GetPubkey",
|
||||||
|
Handler: _ArkService_GetPubkey_Handler,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Streams: []grpc.StreamDesc{
|
Streams: []grpc.StreamDesc{
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,12 +37,14 @@ type Service interface {
|
|||||||
GetEventsChannel(ctx context.Context) <-chan domain.RoundEvent
|
GetEventsChannel(ctx context.Context) <-chan domain.RoundEvent
|
||||||
UpdatePaymentStatus(ctx context.Context, id string) error
|
UpdatePaymentStatus(ctx context.Context, id string) error
|
||||||
ListVtxos(ctx context.Context, pubkey string) ([]domain.Vtxo, error)
|
ListVtxos(ctx context.Context, pubkey string) ([]domain.Vtxo, error)
|
||||||
|
GetPubkey(ctx context.Context) (string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type service struct {
|
type service struct {
|
||||||
roundInterval int64
|
roundInterval int64
|
||||||
network common.Network
|
network common.Network
|
||||||
onchainNework network.Network
|
onchainNework network.Network
|
||||||
|
pubkey string
|
||||||
|
|
||||||
wallet ports.WalletService
|
wallet ports.WalletService
|
||||||
scheduler ports.SchedulerService
|
scheduler ports.SchedulerService
|
||||||
@@ -59,12 +61,14 @@ func NewService(
|
|||||||
walletSvc ports.WalletService, schedulerSvc ports.SchedulerService,
|
walletSvc ports.WalletService, schedulerSvc ports.SchedulerService,
|
||||||
repoManager ports.RepoManager, builder ports.TxBuilder,
|
repoManager ports.RepoManager, builder ports.TxBuilder,
|
||||||
) Service {
|
) Service {
|
||||||
|
pubkey := ""
|
||||||
|
eventsCh := make(chan domain.RoundEvent)
|
||||||
paymentRequests := newPaymentsMap(nil)
|
paymentRequests := newPaymentsMap(nil)
|
||||||
forfeitTxs := newForfeitTxsMap()
|
forfeitTxs := newForfeitTxsMap()
|
||||||
svc := &service{
|
svc := &service{
|
||||||
interval, network, onchainNetwork,
|
interval, network, onchainNetwork, pubkey,
|
||||||
walletSvc, schedulerSvc, repoManager, builder, paymentRequests, forfeitTxs,
|
walletSvc, schedulerSvc, repoManager, builder, paymentRequests, forfeitTxs,
|
||||||
make(chan domain.RoundEvent),
|
eventsCh,
|
||||||
}
|
}
|
||||||
repoManager.RegisterEventsHandler(
|
repoManager.RegisterEventsHandler(
|
||||||
func(round *domain.Round) {
|
func(round *domain.Round) {
|
||||||
@@ -171,6 +175,21 @@ func (s *service) GetRoundByTxid(ctx context.Context, poolTxid string) (*domain.
|
|||||||
return s.repoManager.Rounds().GetRoundWithTxid(ctx, poolTxid)
|
return s.repoManager.Rounds().GetRoundWithTxid(ctx, poolTxid)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *service) GetPubkey(ctx context.Context) (string, error) {
|
||||||
|
if s.pubkey == "" {
|
||||||
|
pubkey, err := s.wallet.GetPubkey(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
serializedPubkey, err := common.EncodePubKey(s.network.PubKey, pubkey)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
s.pubkey = serializedPubkey
|
||||||
|
}
|
||||||
|
return s.pubkey, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *service) start() error {
|
func (s *service) start() error {
|
||||||
startImmediately := true
|
startImmediately := true
|
||||||
finalizationInterval := int64(s.roundInterval / 2)
|
finalizationInterval := int64(s.roundInterval / 2)
|
||||||
@@ -283,7 +302,7 @@ func (s *service) finalizeRound() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
txid, err := s.wallet.Transaction().BroadcastTransaction(ctx, round.TxHex)
|
txid, err := s.wallet.BroadcastTransaction(ctx, round.TxHex)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
round.Fail(fmt.Errorf("failed to broadcast pool tx: %s", err))
|
round.Fail(fmt.Errorf("failed to broadcast pool tx: %s", err))
|
||||||
log.WithError(err).Warn("failed to broadcast pool tx")
|
log.WithError(err).Warn("failed to broadcast pool tx")
|
||||||
|
|||||||
@@ -1,35 +1,15 @@
|
|||||||
package ports
|
package ports
|
||||||
|
|
||||||
import "context"
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/decred/dcrd/dcrec/secp256k1/v4"
|
||||||
|
)
|
||||||
|
|
||||||
type WalletService interface {
|
type WalletService interface {
|
||||||
Wallet() Wallet
|
|
||||||
Account() Account
|
|
||||||
Transaction() Transaction
|
|
||||||
Notification() Notification
|
|
||||||
Close()
|
|
||||||
}
|
|
||||||
|
|
||||||
type Wallet interface {
|
|
||||||
GenSeed(ctx context.Context) ([]string, error)
|
|
||||||
InitWallet(ctx context.Context, mnemonic []string, password string) error
|
|
||||||
Unlock(ctx context.Context, password string) error
|
|
||||||
Lock(ctx context.Context, password string) error
|
|
||||||
Status(ctx context.Context) (WalletStatus, error)
|
Status(ctx context.Context) (WalletStatus, error)
|
||||||
}
|
GetPubkey(ctx context.Context) (*secp256k1.PublicKey, error)
|
||||||
|
|
||||||
type Account interface {
|
|
||||||
DeriveAddresses(ctx context.Context, num int) ([]string, error)
|
DeriveAddresses(ctx context.Context, num int) ([]string, error)
|
||||||
GetBalance(ctx context.Context) (map[string]Balance, error)
|
|
||||||
ListUtxos(ctx context.Context) ([]Utxo, []Utxo, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
type Transaction interface {
|
|
||||||
GetTransaction(ctx context.Context, txid string) (string, error)
|
|
||||||
UpdatePset(
|
|
||||||
ctx context.Context, pset string,
|
|
||||||
ins []TxInput, outs []TxOutput,
|
|
||||||
) (string, error)
|
|
||||||
SignPset(
|
SignPset(
|
||||||
ctx context.Context, pset string, extractRawTx bool,
|
ctx context.Context, pset string, extractRawTx bool,
|
||||||
) (string, error)
|
) (string, error)
|
||||||
@@ -37,71 +17,15 @@ type Transaction interface {
|
|||||||
BroadcastTransaction(ctx context.Context, txHex string) (string, error)
|
BroadcastTransaction(ctx context.Context, txHex string) (string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Notification interface {
|
|
||||||
GetTxNotifications() chan WalletTxNotification
|
|
||||||
GetUtxoNotifications() chan WalletUtxoNotification
|
|
||||||
}
|
|
||||||
|
|
||||||
type WalletStatus interface {
|
type WalletStatus interface {
|
||||||
IsInitialized() bool
|
IsInitialized() bool
|
||||||
IsUnlocked() bool
|
IsUnlocked() bool
|
||||||
IsSynced() bool
|
IsSynced() bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type WalletTxNotification interface {
|
type TxInput interface {
|
||||||
GetEventType() WalletTxEventType
|
|
||||||
GetAccountNames() []string
|
|
||||||
GetTxHex() string
|
|
||||||
GetBlockDetails() BlockInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
type WalletUtxoNotification interface {
|
|
||||||
GetEventType() WalletUtxoEventType
|
|
||||||
GetUtxos() []Utxo
|
|
||||||
}
|
|
||||||
|
|
||||||
type WalletTxEventType interface {
|
|
||||||
IsUnconfirmed() bool
|
|
||||||
IsConfirmed() bool
|
|
||||||
IsBroadcasted() bool
|
|
||||||
}
|
|
||||||
|
|
||||||
type WalletUtxoEventType interface {
|
|
||||||
IsUnconfirmed() bool
|
|
||||||
IsConfirmed() bool
|
|
||||||
IsLocked() bool
|
|
||||||
IsUnlocked() bool
|
|
||||||
IsSpent() bool
|
|
||||||
}
|
|
||||||
|
|
||||||
type Balance interface {
|
|
||||||
GetConfirmedBalance() uint64
|
|
||||||
GetUnconfirmedBalance() uint64
|
|
||||||
GetLockedBalance() uint64
|
|
||||||
GetTotalBalance() uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
type UtxoKey interface {
|
|
||||||
GetTxid() string
|
GetTxid() string
|
||||||
GetIndex() uint32
|
GetIndex() uint32
|
||||||
}
|
|
||||||
|
|
||||||
type UtxoStatus interface {
|
|
||||||
GetTxid() string
|
|
||||||
GetBlockInfo() BlockInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
type Utxo interface {
|
|
||||||
UtxoKey
|
|
||||||
GetAsset() string
|
|
||||||
GetValue() uint64
|
|
||||||
GetScript() string
|
|
||||||
GetConfirmedStatus() UtxoStatus
|
|
||||||
GetSpentStatus() UtxoStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
type TxInput interface {
|
|
||||||
UtxoKey
|
|
||||||
GetScript() string
|
GetScript() string
|
||||||
GetScriptSigSize() int
|
GetScriptSigSize() int
|
||||||
GetWitnessSize() int
|
GetWitnessSize() int
|
||||||
@@ -111,9 +35,3 @@ type TxOutput interface {
|
|||||||
GetAmount() uint64
|
GetAmount() uint64
|
||||||
GetScript() string
|
GetScript() string
|
||||||
}
|
}
|
||||||
|
|
||||||
type BlockInfo interface {
|
|
||||||
GetHash() string
|
|
||||||
GetHeight() uint64
|
|
||||||
GetTimestamp() int64
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -4,23 +4,13 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
pb "github.com/ark-network/ark/api-spec/protobuf/gen/ocean/v1"
|
pb "github.com/ark-network/ark/api-spec/protobuf/gen/ocean/v1"
|
||||||
"github.com/ark-network/ark/internal/core/ports"
|
|
||||||
"github.com/vulpemventures/go-elements/address"
|
"github.com/vulpemventures/go-elements/address"
|
||||||
"google.golang.org/grpc"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type account struct {
|
func (s *service) DeriveAddresses(
|
||||||
client pb.AccountServiceClient
|
|
||||||
}
|
|
||||||
|
|
||||||
func newAccount(conn *grpc.ClientConn) *account {
|
|
||||||
return &account{pb.NewAccountServiceClient(conn)}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *account) DeriveAddresses(
|
|
||||||
ctx context.Context, numOfAddresses int,
|
ctx context.Context, numOfAddresses int,
|
||||||
) ([]string, error) {
|
) ([]string, error) {
|
||||||
res, err := m.client.DeriveAddresses(ctx, &pb.DeriveAddressesRequest{
|
res, err := s.accountClient.DeriveAddresses(ctx, &pb.DeriveAddressesRequest{
|
||||||
AccountName: accountLabel,
|
AccountName: accountLabel,
|
||||||
NumOfAddresses: uint64(numOfAddresses),
|
NumOfAddresses: uint64(numOfAddresses),
|
||||||
})
|
})
|
||||||
@@ -36,47 +26,3 @@ func (m *account) DeriveAddresses(
|
|||||||
}
|
}
|
||||||
return addresses, nil
|
return addresses, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *account) GetBalance(
|
|
||||||
ctx context.Context,
|
|
||||||
) (map[string]ports.Balance, error) {
|
|
||||||
res, err := m.client.Balance(ctx, &pb.BalanceRequest{
|
|
||||||
AccountName: accountLabel,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
balance := make(map[string]ports.Balance)
|
|
||||||
for asset, bal := range res.GetBalance() {
|
|
||||||
balance[asset] = bal
|
|
||||||
}
|
|
||||||
return balance, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *account) ListUtxos(
|
|
||||||
ctx context.Context,
|
|
||||||
) (spendableUtxos, lockedUtxos []ports.Utxo, err error) {
|
|
||||||
res, err := m.client.ListUtxos(ctx, &pb.ListUtxosRequest{
|
|
||||||
AccountName: accountLabel,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
if res.GetSpendableUtxos() != nil {
|
|
||||||
spendableUtxos = utxoList(res.GetSpendableUtxos().GetUtxos()).toPortableList()
|
|
||||||
}
|
|
||||||
if res.GetLockedUtxos() != nil {
|
|
||||||
lockedUtxos = utxoList(res.GetLockedUtxos().GetUtxos()).toPortableList()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type utxoList []*pb.Utxo
|
|
||||||
|
|
||||||
func (l utxoList) toPortableList() []ports.Utxo {
|
|
||||||
utxos := make([]ports.Utxo, 0, len(l))
|
|
||||||
for _, u := range l {
|
|
||||||
utxos = append(utxos, utxoInfo{u})
|
|
||||||
}
|
|
||||||
return utxos
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,195 +0,0 @@
|
|||||||
package oceanwallet
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
|
|
||||||
pb "github.com/ark-network/ark/api-spec/protobuf/gen/ocean/v1"
|
|
||||||
"github.com/ark-network/ark/internal/core/ports"
|
|
||||||
log "github.com/sirupsen/logrus"
|
|
||||||
"google.golang.org/grpc"
|
|
||||||
)
|
|
||||||
|
|
||||||
type notify struct {
|
|
||||||
client pb.NotificationServiceClient
|
|
||||||
chTxNotifications chan ports.WalletTxNotification
|
|
||||||
chUtxoNotifications chan ports.WalletUtxoNotification
|
|
||||||
}
|
|
||||||
|
|
||||||
func newNotify(conn *grpc.ClientConn) (*notify, error) {
|
|
||||||
svc := ¬ify{
|
|
||||||
client: pb.NewNotificationServiceClient(conn),
|
|
||||||
chTxNotifications: make(chan ports.WalletTxNotification),
|
|
||||||
chUtxoNotifications: make(chan ports.WalletUtxoNotification),
|
|
||||||
}
|
|
||||||
|
|
||||||
txStream, err := svc.client.TransactionNotifications(
|
|
||||||
context.Background(), &pb.TransactionNotificationsRequest{},
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf(
|
|
||||||
"failed to open stream for tx notifications: %s", err,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
go svc.startListeningForTxNotifications(txStream)
|
|
||||||
|
|
||||||
utxoStream, err := svc.client.UtxosNotifications(
|
|
||||||
context.Background(), &pb.UtxosNotificationsRequest{},
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf(
|
|
||||||
"failed to open stream for utxo notifications: %s", err,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
go svc.startListeningForUtxoNotifications(utxoStream)
|
|
||||||
|
|
||||||
return svc, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *notify) GetTxNotifications() chan ports.WalletTxNotification {
|
|
||||||
return m.chTxNotifications
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *notify) GetUtxoNotifications() chan ports.WalletUtxoNotification {
|
|
||||||
return m.chUtxoNotifications
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *notify) startListeningForTxNotifications(
|
|
||||||
stream pb.NotificationService_TransactionNotificationsClient,
|
|
||||||
) {
|
|
||||||
var err error
|
|
||||||
defer func() {
|
|
||||||
if err != nil {
|
|
||||||
log.WithError(err).Fatal(
|
|
||||||
"notification handler: error while listenting to tx notifications",
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
for {
|
|
||||||
var notification *pb.TransactionNotificationsResponse
|
|
||||||
notification, err = stream.Recv()
|
|
||||||
if err != nil {
|
|
||||||
if err == io.EOF {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
case m.chTxNotifications <- txNotifyInfo{notification}:
|
|
||||||
continue
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *notify) startListeningForUtxoNotifications(
|
|
||||||
stream pb.NotificationService_UtxosNotificationsClient,
|
|
||||||
) {
|
|
||||||
var err error
|
|
||||||
defer func() {
|
|
||||||
if err != nil {
|
|
||||||
log.WithError(err).Fatal(
|
|
||||||
"notification handler: error while listenting to utxo notifications",
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
for {
|
|
||||||
var notification *pb.UtxosNotificationsResponse
|
|
||||||
notification, err = stream.Recv()
|
|
||||||
if err != nil {
|
|
||||||
if err == io.EOF {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
case m.chUtxoNotifications <- utxoNotifyInfo{notification}:
|
|
||||||
continue
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type txNotifyInfo struct {
|
|
||||||
*pb.TransactionNotificationsResponse
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i txNotifyInfo) GetEventType() ports.WalletTxEventType {
|
|
||||||
return txEventType(i.TransactionNotificationsResponse.GetEventType())
|
|
||||||
}
|
|
||||||
func (i txNotifyInfo) GetTxHex() string {
|
|
||||||
return i.TransactionNotificationsResponse.GetTxhex()
|
|
||||||
}
|
|
||||||
func (i txNotifyInfo) GetBlockDetails() ports.BlockInfo {
|
|
||||||
return i.TransactionNotificationsResponse.GetBlockDetails()
|
|
||||||
}
|
|
||||||
|
|
||||||
type txEventType pb.TxEventType
|
|
||||||
|
|
||||||
func (t txEventType) IsUnconfirmed() bool {
|
|
||||||
return int(t) == int(pb.TxEventType_TX_EVENT_TYPE_UNCONFIRMED)
|
|
||||||
}
|
|
||||||
func (t txEventType) IsConfirmed() bool {
|
|
||||||
return int(t) == int(pb.TxEventType_TX_EVENT_TYPE_CONFIRMED)
|
|
||||||
}
|
|
||||||
func (t txEventType) IsBroadcasted() bool {
|
|
||||||
return int(t) == int(pb.TxEventType_TX_EVENT_TYPE_BROADCASTED)
|
|
||||||
}
|
|
||||||
|
|
||||||
type utxoNotifyInfo struct {
|
|
||||||
*pb.UtxosNotificationsResponse
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i utxoNotifyInfo) GetEventType() ports.WalletUtxoEventType {
|
|
||||||
return utxoEventType(i.UtxosNotificationsResponse.GetEventType())
|
|
||||||
}
|
|
||||||
func (i utxoNotifyInfo) GetUtxos() []ports.Utxo {
|
|
||||||
utxos := make([]ports.Utxo, 0, len(i.UtxosNotificationsResponse.GetUtxos()))
|
|
||||||
for _, u := range i.UtxosNotificationsResponse.GetUtxos() {
|
|
||||||
utxos = append(utxos, utxoInfo{u})
|
|
||||||
}
|
|
||||||
return utxos
|
|
||||||
}
|
|
||||||
|
|
||||||
type utxoEventType pb.UtxoEventType
|
|
||||||
|
|
||||||
func (t utxoEventType) IsUnconfirmed() bool {
|
|
||||||
return int(t) == int(pb.UtxoEventType_UTXO_EVENT_TYPE_NEW)
|
|
||||||
}
|
|
||||||
func (t utxoEventType) IsSpent() bool {
|
|
||||||
return int(t) == int(pb.UtxoEventType_UTXO_EVENT_TYPE_SPENT)
|
|
||||||
}
|
|
||||||
func (t utxoEventType) IsConfirmed() bool {
|
|
||||||
return int(t) == int(pb.UtxoEventType_UTXO_EVENT_TYPE_CONFIRMED)
|
|
||||||
}
|
|
||||||
func (t utxoEventType) IsLocked() bool {
|
|
||||||
return int(t) == int(pb.UtxoEventType_UTXO_EVENT_TYPE_LOCKED)
|
|
||||||
}
|
|
||||||
func (t utxoEventType) IsUnlocked() bool {
|
|
||||||
return int(t) == int(pb.UtxoEventType_UTXO_EVENT_TYPE_UNLOCKED)
|
|
||||||
}
|
|
||||||
|
|
||||||
type utxoInfo struct {
|
|
||||||
*pb.Utxo
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i utxoInfo) GetConfirmedStatus() ports.UtxoStatus {
|
|
||||||
return utxoStatusInfo{i.Utxo.GetConfirmedStatus()}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i utxoInfo) GetSpentStatus() ports.UtxoStatus {
|
|
||||||
return utxoStatusInfo{i.Utxo.GetSpentStatus()}
|
|
||||||
}
|
|
||||||
|
|
||||||
type utxoStatusInfo struct {
|
|
||||||
*pb.UtxoStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i utxoStatusInfo) GetBlockInfo() ports.BlockInfo {
|
|
||||||
return i.UtxoStatus.GetBlockInfo()
|
|
||||||
}
|
|
||||||
@@ -2,20 +2,20 @@ package oceanwallet
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
pb "github.com/ark-network/ark/api-spec/protobuf/gen/ocean/v1"
|
||||||
"github.com/ark-network/ark/internal/core/ports"
|
"github.com/ark-network/ark/internal/core/ports"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
)
|
)
|
||||||
|
|
||||||
type service struct {
|
type service struct {
|
||||||
addr string
|
addr string
|
||||||
conn *grpc.ClientConn
|
conn *grpc.ClientConn
|
||||||
|
walletClient pb.WalletServiceClient
|
||||||
wallet *wallet
|
accountClient pb.AccountServiceClient
|
||||||
account *account
|
txClient pb.TransactionServiceClient
|
||||||
tx *tx
|
|
||||||
notify *notify
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewService(addr string) (ports.WalletService, error) {
|
func NewService(addr string) (ports.WalletService, error) {
|
||||||
@@ -23,37 +23,27 @@ func NewService(addr string) (ports.WalletService, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
walletClient := pb.NewWalletServiceClient(conn)
|
||||||
|
accountClient := pb.NewAccountServiceClient(conn)
|
||||||
|
txClient := pb.NewTransactionServiceClient(conn)
|
||||||
svc := &service{
|
svc := &service{
|
||||||
addr: addr,
|
addr: addr,
|
||||||
conn: conn,
|
conn: conn,
|
||||||
wallet: newWallet(conn),
|
walletClient: walletClient,
|
||||||
account: newAccount(conn),
|
accountClient: accountClient,
|
||||||
tx: newTx(conn),
|
txClient: txClient,
|
||||||
}
|
}
|
||||||
if _, err := svc.Wallet().Status(context.Background()); err != nil {
|
status, err := svc.Status(context.Background())
|
||||||
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
svc.notify, _ = newNotify(conn)
|
if !(status.IsInitialized() && status.IsUnlocked()) {
|
||||||
|
return nil, fmt.Errorf("wallet must be already initialized and unlocked")
|
||||||
|
}
|
||||||
|
|
||||||
return svc, nil
|
return svc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *service) Wallet() ports.Wallet {
|
|
||||||
return s.wallet
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *service) Account() ports.Account {
|
|
||||||
return s.account
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *service) Transaction() ports.Transaction {
|
|
||||||
return s.tx
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *service) Notification() ports.Notification {
|
|
||||||
return s.notify
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *service) Close() {
|
func (s *service) Close() {
|
||||||
s.conn.Close()
|
s.conn.Close()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,50 +7,14 @@ import (
|
|||||||
pb "github.com/ark-network/ark/api-spec/protobuf/gen/ocean/v1"
|
pb "github.com/ark-network/ark/api-spec/protobuf/gen/ocean/v1"
|
||||||
"github.com/ark-network/ark/internal/core/ports"
|
"github.com/ark-network/ark/internal/core/ports"
|
||||||
"github.com/vulpemventures/go-elements/psetv2"
|
"github.com/vulpemventures/go-elements/psetv2"
|
||||||
"google.golang.org/grpc"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const msatsPerByte = 110
|
const msatsPerByte = 110
|
||||||
|
|
||||||
type tx struct {
|
func (s *service) SignPset(
|
||||||
client pb.TransactionServiceClient
|
|
||||||
}
|
|
||||||
|
|
||||||
func newTx(conn *grpc.ClientConn) *tx {
|
|
||||||
return &tx{pb.NewTransactionServiceClient(conn)}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *tx) GetTransaction(
|
|
||||||
ctx context.Context, txid string,
|
|
||||||
) (string, error) {
|
|
||||||
res, err := m.client.GetTransaction(ctx, &pb.GetTransactionRequest{
|
|
||||||
Txid: txid,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return res.GetTxHex(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *tx) UpdatePset(
|
|
||||||
ctx context.Context, pset string,
|
|
||||||
ins []ports.TxInput, outs []ports.TxOutput,
|
|
||||||
) (string, error) {
|
|
||||||
res, err := m.client.UpdatePset(ctx, &pb.UpdatePsetRequest{
|
|
||||||
Pset: pset,
|
|
||||||
Inputs: inputList(ins).toProto(),
|
|
||||||
Outputs: outputList(outs).toProto(),
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return res.GetPset(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *tx) SignPset(
|
|
||||||
ctx context.Context, pset string, extractRawTx bool,
|
ctx context.Context, pset string, extractRawTx bool,
|
||||||
) (string, error) {
|
) (string, error) {
|
||||||
res, err := m.client.SignPset(ctx, &pb.SignPsetRequest{
|
res, err := s.txClient.SignPset(ctx, &pb.SignPsetRequest{
|
||||||
Pset: pset,
|
Pset: pset,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -68,10 +32,10 @@ func (m *tx) SignPset(
|
|||||||
return ptx.ToBase64()
|
return ptx.ToBase64()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *tx) Transfer(
|
func (s *service) Transfer(
|
||||||
ctx context.Context, outs []ports.TxOutput,
|
ctx context.Context, outs []ports.TxOutput,
|
||||||
) (string, error) {
|
) (string, error) {
|
||||||
res, err := m.client.Transfer(ctx, &pb.TransferRequest{
|
res, err := s.txClient.Transfer(ctx, &pb.TransferRequest{
|
||||||
AccountName: accountLabel,
|
AccountName: accountLabel,
|
||||||
Receivers: outputList(outs).toProto(),
|
Receivers: outputList(outs).toProto(),
|
||||||
MillisatsPerByte: msatsPerByte,
|
MillisatsPerByte: msatsPerByte,
|
||||||
@@ -82,10 +46,10 @@ func (m *tx) Transfer(
|
|||||||
return res.GetTxHex(), nil
|
return res.GetTxHex(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *tx) BroadcastTransaction(
|
func (s *service) BroadcastTransaction(
|
||||||
ctx context.Context, txHex string,
|
ctx context.Context, txHex string,
|
||||||
) (string, error) {
|
) (string, error) {
|
||||||
res, err := m.client.BroadcastTransaction(
|
res, err := s.txClient.BroadcastTransaction(
|
||||||
ctx, &pb.BroadcastTransactionRequest{
|
ctx, &pb.BroadcastTransactionRequest{
|
||||||
TxHex: txHex,
|
TxHex: txHex,
|
||||||
},
|
},
|
||||||
@@ -96,22 +60,6 @@ func (m *tx) BroadcastTransaction(
|
|||||||
return res.GetTxid(), nil
|
return res.GetTxid(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type inputList []ports.TxInput
|
|
||||||
|
|
||||||
func (l inputList) toProto() []*pb.Input {
|
|
||||||
list := make([]*pb.Input, 0, len(l))
|
|
||||||
for _, in := range l {
|
|
||||||
list = append(list, &pb.Input{
|
|
||||||
Txid: in.GetTxid(),
|
|
||||||
Index: in.GetIndex(),
|
|
||||||
Script: in.GetScript(),
|
|
||||||
ScriptsigSize: uint64(in.GetScriptSigSize()),
|
|
||||||
WitnessSize: uint64(in.GetWitnessSize()),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return list
|
|
||||||
}
|
|
||||||
|
|
||||||
type outputList []ports.TxOutput
|
type outputList []ports.TxOutput
|
||||||
|
|
||||||
func (l outputList) toProto() []*pb.Output {
|
func (l outputList) toProto() []*pb.Output {
|
||||||
|
|||||||
@@ -2,80 +2,42 @@ package oceanwallet
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"strings"
|
"fmt"
|
||||||
|
|
||||||
pb "github.com/ark-network/ark/api-spec/protobuf/gen/ocean/v1"
|
pb "github.com/ark-network/ark/api-spec/protobuf/gen/ocean/v1"
|
||||||
"github.com/ark-network/ark/internal/core/ports"
|
"github.com/ark-network/ark/internal/core/ports"
|
||||||
"google.golang.org/grpc"
|
"github.com/btcsuite/btcd/btcutil/hdkeychain"
|
||||||
|
"github.com/decred/dcrd/dcrec/secp256k1/v4"
|
||||||
)
|
)
|
||||||
|
|
||||||
const accountLabel = "ark"
|
const accountLabel = "ark"
|
||||||
|
|
||||||
type wallet struct {
|
func (s *service) GetPubkey(ctx context.Context) (*secp256k1.PublicKey, error) {
|
||||||
client pb.WalletServiceClient
|
res, err := s.walletClient.GetInfo(ctx, &pb.GetInfoRequest{})
|
||||||
accountClient pb.AccountServiceClient
|
|
||||||
}
|
|
||||||
|
|
||||||
func newWallet(conn *grpc.ClientConn) *wallet {
|
|
||||||
return &wallet{
|
|
||||||
pb.NewWalletServiceClient(conn),
|
|
||||||
pb.NewAccountServiceClient(conn),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *wallet) GenSeed(ctx context.Context) ([]string, error) {
|
|
||||||
res, err := m.client.GenSeed(ctx, &pb.GenSeedRequest{})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
mnemonic := strings.Split(res.GetMnemonic(), " ")
|
if len(res.GetAccounts()) <= 0 {
|
||||||
|
return nil, fmt.Errorf("wallet is locked")
|
||||||
return mnemonic, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *wallet) InitWallet(
|
|
||||||
ctx context.Context, mnemonic []string, password string,
|
|
||||||
) error {
|
|
||||||
_, err := m.client.CreateWallet(ctx, &pb.CreateWalletRequest{
|
|
||||||
Mnemonic: strings.Join(mnemonic, " "),
|
|
||||||
Password: password,
|
|
||||||
})
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *wallet) Unlock(ctx context.Context, password string) error {
|
|
||||||
if _, err := m.client.Unlock(ctx, &pb.UnlockRequest{
|
|
||||||
Password: password,
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
// Let's always make sure the 'ark' account is created after unlocking.
|
xpub := res.GetAccounts()[0].GetXpubs()[0]
|
||||||
info, err := m.client.GetInfo(ctx, &pb.GetInfoRequest{})
|
node, err := hdkeychain.NewKeyFromString(xpub)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(info.GetAccounts()) <= 0 {
|
for i := 0; i < 2; i++ {
|
||||||
_, err := m.accountClient.CreateAccountBIP44(
|
node, err = node.Derive(0)
|
||||||
ctx, &pb.CreateAccountBIP44Request{
|
if err != nil {
|
||||||
Label: accountLabel,
|
return nil, err
|
||||||
},
|
}
|
||||||
)
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
return nil
|
return node.ECPubKey()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *wallet) Lock(ctx context.Context, password string) error {
|
func (s *service) Status(
|
||||||
_, err := m.client.Lock(ctx, &pb.LockRequest{
|
|
||||||
Password: password,
|
|
||||||
})
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *wallet) Status(
|
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
) (ports.WalletStatus, error) {
|
) (ports.WalletStatus, error) {
|
||||||
res, err := m.client.Status(ctx, &pb.StatusRequest{})
|
res, err := s.walletClient.Status(ctx, &pb.StatusRequest{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ func (b *txBuilder) BuildPoolTx(wallet ports.WalletService, payments []domain.Pa
|
|||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
return wallet.Transaction().Transfer(ctx, []ports.TxOutput{
|
return wallet.Transfer(ctx, []ports.TxOutput{
|
||||||
newOutput(aspScript, sharedOutputAmount),
|
newOutput(aspScript, sharedOutputAmount),
|
||||||
newOutput(aspScript, connectorOutputAmount),
|
newOutput(aspScript, connectorOutputAmount),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -176,6 +176,17 @@ func (h *handler) ListVtxos(ctx context.Context, req *arkv1.ListVtxosRequest) (*
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *handler) GetPubkey(ctx context.Context, req *arkv1.GetPubkeyRequest) (*arkv1.GetPubkeyResponse, error) {
|
||||||
|
pubkey, err := h.svc.GetPubkey(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &arkv1.GetPubkeyResponse{
|
||||||
|
Pubkey: pubkey,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (h *handler) pushListener(l *listener) {
|
func (h *handler) pushListener(l *listener) {
|
||||||
h.listenersLock.Lock()
|
h.listenersLock.Lock()
|
||||||
defer h.listenersLock.Unlock()
|
defer h.listenersLock.Unlock()
|
||||||
|
|||||||
Reference in New Issue
Block a user