walletrpc: add ListUnspent RPC

This commit is contained in:
Wilmer Paulino 2020-05-20 16:12:51 -07:00
parent 7616a3dc7f
commit acfd432602
No known key found for this signature in database
GPG Key ID: 6DF57B9F9514972F
6 changed files with 362 additions and 109 deletions

@ -3,6 +3,7 @@
package walletrpc package walletrpc
import ( import (
"github.com/btcsuite/btcd/chaincfg"
"github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/keychain"
"github.com/lightningnetwork/lnd/lnwallet" "github.com/lightningnetwork/lnd/lnwallet"
"github.com/lightningnetwork/lnd/lnwallet/chainfee" "github.com/lightningnetwork/lnd/lnwallet/chainfee"
@ -48,4 +49,7 @@ type Config struct {
// Chain is an interface that the WalletKit will use to determine state // Chain is an interface that the WalletKit will use to determine state
// about the backing chain of the wallet. // about the backing chain of the wallet.
Chain lnwallet.BlockChainIO Chain lnwallet.BlockChainIO
// ChainParams are the parameters of the wallet's backing chain.
ChainParams *chaincfg.Params
} }

@ -132,6 +132,95 @@ func (WitnessType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{0} return fileDescriptor_6cc6942ac78249e5, []int{0}
} }
type ListUnspentRequest struct {
// The minimum number of confirmations to be included.
MinConfs int32 `protobuf:"varint,1,opt,name=min_confs,json=minConfs,proto3" json:"min_confs,omitempty"`
// The maximum number of confirmations to be included.
MaxConfs int32 `protobuf:"varint,2,opt,name=max_confs,json=maxConfs,proto3" json:"max_confs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ListUnspentRequest) Reset() { *m = ListUnspentRequest{} }
func (m *ListUnspentRequest) String() string { return proto.CompactTextString(m) }
func (*ListUnspentRequest) ProtoMessage() {}
func (*ListUnspentRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{0}
}
func (m *ListUnspentRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListUnspentRequest.Unmarshal(m, b)
}
func (m *ListUnspentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListUnspentRequest.Marshal(b, m, deterministic)
}
func (m *ListUnspentRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ListUnspentRequest.Merge(m, src)
}
func (m *ListUnspentRequest) XXX_Size() int {
return xxx_messageInfo_ListUnspentRequest.Size(m)
}
func (m *ListUnspentRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ListUnspentRequest.DiscardUnknown(m)
}
var xxx_messageInfo_ListUnspentRequest proto.InternalMessageInfo
func (m *ListUnspentRequest) GetMinConfs() int32 {
if m != nil {
return m.MinConfs
}
return 0
}
func (m *ListUnspentRequest) GetMaxConfs() int32 {
if m != nil {
return m.MaxConfs
}
return 0
}
type ListUnspentResponse struct {
// A list of utxos satisfying the specified number of confirmations.
Utxos []*lnrpc.Utxo `protobuf:"bytes,1,rep,name=utxos,proto3" json:"utxos,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ListUnspentResponse) Reset() { *m = ListUnspentResponse{} }
func (m *ListUnspentResponse) String() string { return proto.CompactTextString(m) }
func (*ListUnspentResponse) ProtoMessage() {}
func (*ListUnspentResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{1}
}
func (m *ListUnspentResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListUnspentResponse.Unmarshal(m, b)
}
func (m *ListUnspentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListUnspentResponse.Marshal(b, m, deterministic)
}
func (m *ListUnspentResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ListUnspentResponse.Merge(m, src)
}
func (m *ListUnspentResponse) XXX_Size() int {
return xxx_messageInfo_ListUnspentResponse.Size(m)
}
func (m *ListUnspentResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ListUnspentResponse.DiscardUnknown(m)
}
var xxx_messageInfo_ListUnspentResponse proto.InternalMessageInfo
func (m *ListUnspentResponse) GetUtxos() []*lnrpc.Utxo {
if m != nil {
return m.Utxos
}
return nil
}
type LeaseOutputRequest struct { type LeaseOutputRequest struct {
// //
//An ID of 32 random bytes that must be unique for each distinct application //An ID of 32 random bytes that must be unique for each distinct application
@ -148,7 +237,7 @@ func (m *LeaseOutputRequest) Reset() { *m = LeaseOutputRequest{} }
func (m *LeaseOutputRequest) String() string { return proto.CompactTextString(m) } func (m *LeaseOutputRequest) String() string { return proto.CompactTextString(m) }
func (*LeaseOutputRequest) ProtoMessage() {} func (*LeaseOutputRequest) ProtoMessage() {}
func (*LeaseOutputRequest) Descriptor() ([]byte, []int) { func (*LeaseOutputRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{0} return fileDescriptor_6cc6942ac78249e5, []int{2}
} }
func (m *LeaseOutputRequest) XXX_Unmarshal(b []byte) error { func (m *LeaseOutputRequest) XXX_Unmarshal(b []byte) error {
@ -196,7 +285,7 @@ func (m *LeaseOutputResponse) Reset() { *m = LeaseOutputResponse{} }
func (m *LeaseOutputResponse) String() string { return proto.CompactTextString(m) } func (m *LeaseOutputResponse) String() string { return proto.CompactTextString(m) }
func (*LeaseOutputResponse) ProtoMessage() {} func (*LeaseOutputResponse) ProtoMessage() {}
func (*LeaseOutputResponse) Descriptor() ([]byte, []int) { func (*LeaseOutputResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{1} return fileDescriptor_6cc6942ac78249e5, []int{3}
} }
func (m *LeaseOutputResponse) XXX_Unmarshal(b []byte) error { func (m *LeaseOutputResponse) XXX_Unmarshal(b []byte) error {
@ -238,7 +327,7 @@ func (m *ReleaseOutputRequest) Reset() { *m = ReleaseOutputRequest{} }
func (m *ReleaseOutputRequest) String() string { return proto.CompactTextString(m) } func (m *ReleaseOutputRequest) String() string { return proto.CompactTextString(m) }
func (*ReleaseOutputRequest) ProtoMessage() {} func (*ReleaseOutputRequest) ProtoMessage() {}
func (*ReleaseOutputRequest) Descriptor() ([]byte, []int) { func (*ReleaseOutputRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{2} return fileDescriptor_6cc6942ac78249e5, []int{4}
} }
func (m *ReleaseOutputRequest) XXX_Unmarshal(b []byte) error { func (m *ReleaseOutputRequest) XXX_Unmarshal(b []byte) error {
@ -283,7 +372,7 @@ func (m *ReleaseOutputResponse) Reset() { *m = ReleaseOutputResponse{} }
func (m *ReleaseOutputResponse) String() string { return proto.CompactTextString(m) } func (m *ReleaseOutputResponse) String() string { return proto.CompactTextString(m) }
func (*ReleaseOutputResponse) ProtoMessage() {} func (*ReleaseOutputResponse) ProtoMessage() {}
func (*ReleaseOutputResponse) Descriptor() ([]byte, []int) { func (*ReleaseOutputResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{3} return fileDescriptor_6cc6942ac78249e5, []int{5}
} }
func (m *ReleaseOutputResponse) XXX_Unmarshal(b []byte) error { func (m *ReleaseOutputResponse) XXX_Unmarshal(b []byte) error {
@ -323,7 +412,7 @@ func (m *KeyReq) Reset() { *m = KeyReq{} }
func (m *KeyReq) String() string { return proto.CompactTextString(m) } func (m *KeyReq) String() string { return proto.CompactTextString(m) }
func (*KeyReq) ProtoMessage() {} func (*KeyReq) ProtoMessage() {}
func (*KeyReq) Descriptor() ([]byte, []int) { func (*KeyReq) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{4} return fileDescriptor_6cc6942ac78249e5, []int{6}
} }
func (m *KeyReq) XXX_Unmarshal(b []byte) error { func (m *KeyReq) XXX_Unmarshal(b []byte) error {
@ -368,7 +457,7 @@ func (m *AddrRequest) Reset() { *m = AddrRequest{} }
func (m *AddrRequest) String() string { return proto.CompactTextString(m) } func (m *AddrRequest) String() string { return proto.CompactTextString(m) }
func (*AddrRequest) ProtoMessage() {} func (*AddrRequest) ProtoMessage() {}
func (*AddrRequest) Descriptor() ([]byte, []int) { func (*AddrRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{5} return fileDescriptor_6cc6942ac78249e5, []int{7}
} }
func (m *AddrRequest) XXX_Unmarshal(b []byte) error { func (m *AddrRequest) XXX_Unmarshal(b []byte) error {
@ -402,7 +491,7 @@ func (m *AddrResponse) Reset() { *m = AddrResponse{} }
func (m *AddrResponse) String() string { return proto.CompactTextString(m) } func (m *AddrResponse) String() string { return proto.CompactTextString(m) }
func (*AddrResponse) ProtoMessage() {} func (*AddrResponse) ProtoMessage() {}
func (*AddrResponse) Descriptor() ([]byte, []int) { func (*AddrResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{6} return fileDescriptor_6cc6942ac78249e5, []int{8}
} }
func (m *AddrResponse) XXX_Unmarshal(b []byte) error { func (m *AddrResponse) XXX_Unmarshal(b []byte) error {
@ -446,7 +535,7 @@ func (m *Transaction) Reset() { *m = Transaction{} }
func (m *Transaction) String() string { return proto.CompactTextString(m) } func (m *Transaction) String() string { return proto.CompactTextString(m) }
func (*Transaction) ProtoMessage() {} func (*Transaction) ProtoMessage() {}
func (*Transaction) Descriptor() ([]byte, []int) { func (*Transaction) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{7} return fileDescriptor_6cc6942ac78249e5, []int{9}
} }
func (m *Transaction) XXX_Unmarshal(b []byte) error { func (m *Transaction) XXX_Unmarshal(b []byte) error {
@ -498,7 +587,7 @@ func (m *PublishResponse) Reset() { *m = PublishResponse{} }
func (m *PublishResponse) String() string { return proto.CompactTextString(m) } func (m *PublishResponse) String() string { return proto.CompactTextString(m) }
func (*PublishResponse) ProtoMessage() {} func (*PublishResponse) ProtoMessage() {}
func (*PublishResponse) Descriptor() ([]byte, []int) { func (*PublishResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{8} return fileDescriptor_6cc6942ac78249e5, []int{10}
} }
func (m *PublishResponse) XXX_Unmarshal(b []byte) error { func (m *PublishResponse) XXX_Unmarshal(b []byte) error {
@ -545,7 +634,7 @@ func (m *SendOutputsRequest) Reset() { *m = SendOutputsRequest{} }
func (m *SendOutputsRequest) String() string { return proto.CompactTextString(m) } func (m *SendOutputsRequest) String() string { return proto.CompactTextString(m) }
func (*SendOutputsRequest) ProtoMessage() {} func (*SendOutputsRequest) ProtoMessage() {}
func (*SendOutputsRequest) Descriptor() ([]byte, []int) { func (*SendOutputsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{9} return fileDescriptor_6cc6942ac78249e5, []int{11}
} }
func (m *SendOutputsRequest) XXX_Unmarshal(b []byte) error { func (m *SendOutputsRequest) XXX_Unmarshal(b []byte) error {
@ -600,7 +689,7 @@ func (m *SendOutputsResponse) Reset() { *m = SendOutputsResponse{} }
func (m *SendOutputsResponse) String() string { return proto.CompactTextString(m) } func (m *SendOutputsResponse) String() string { return proto.CompactTextString(m) }
func (*SendOutputsResponse) ProtoMessage() {} func (*SendOutputsResponse) ProtoMessage() {}
func (*SendOutputsResponse) Descriptor() ([]byte, []int) { func (*SendOutputsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{10} return fileDescriptor_6cc6942ac78249e5, []int{12}
} }
func (m *SendOutputsResponse) XXX_Unmarshal(b []byte) error { func (m *SendOutputsResponse) XXX_Unmarshal(b []byte) error {
@ -641,7 +730,7 @@ func (m *EstimateFeeRequest) Reset() { *m = EstimateFeeRequest{} }
func (m *EstimateFeeRequest) String() string { return proto.CompactTextString(m) } func (m *EstimateFeeRequest) String() string { return proto.CompactTextString(m) }
func (*EstimateFeeRequest) ProtoMessage() {} func (*EstimateFeeRequest) ProtoMessage() {}
func (*EstimateFeeRequest) Descriptor() ([]byte, []int) { func (*EstimateFeeRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{11} return fileDescriptor_6cc6942ac78249e5, []int{13}
} }
func (m *EstimateFeeRequest) XXX_Unmarshal(b []byte) error { func (m *EstimateFeeRequest) XXX_Unmarshal(b []byte) error {
@ -683,7 +772,7 @@ func (m *EstimateFeeResponse) Reset() { *m = EstimateFeeResponse{} }
func (m *EstimateFeeResponse) String() string { return proto.CompactTextString(m) } func (m *EstimateFeeResponse) String() string { return proto.CompactTextString(m) }
func (*EstimateFeeResponse) ProtoMessage() {} func (*EstimateFeeResponse) ProtoMessage() {}
func (*EstimateFeeResponse) Descriptor() ([]byte, []int) { func (*EstimateFeeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{12} return fileDescriptor_6cc6942ac78249e5, []int{14}
} }
func (m *EstimateFeeResponse) XXX_Unmarshal(b []byte) error { func (m *EstimateFeeResponse) XXX_Unmarshal(b []byte) error {
@ -746,7 +835,7 @@ func (m *PendingSweep) Reset() { *m = PendingSweep{} }
func (m *PendingSweep) String() string { return proto.CompactTextString(m) } func (m *PendingSweep) String() string { return proto.CompactTextString(m) }
func (*PendingSweep) ProtoMessage() {} func (*PendingSweep) ProtoMessage() {}
func (*PendingSweep) Descriptor() ([]byte, []int) { func (*PendingSweep) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{13} return fileDescriptor_6cc6942ac78249e5, []int{15}
} }
func (m *PendingSweep) XXX_Unmarshal(b []byte) error { func (m *PendingSweep) XXX_Unmarshal(b []byte) error {
@ -840,7 +929,7 @@ func (m *PendingSweepsRequest) Reset() { *m = PendingSweepsRequest{} }
func (m *PendingSweepsRequest) String() string { return proto.CompactTextString(m) } func (m *PendingSweepsRequest) String() string { return proto.CompactTextString(m) }
func (*PendingSweepsRequest) ProtoMessage() {} func (*PendingSweepsRequest) ProtoMessage() {}
func (*PendingSweepsRequest) Descriptor() ([]byte, []int) { func (*PendingSweepsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{14} return fileDescriptor_6cc6942ac78249e5, []int{16}
} }
func (m *PendingSweepsRequest) XXX_Unmarshal(b []byte) error { func (m *PendingSweepsRequest) XXX_Unmarshal(b []byte) error {
@ -874,7 +963,7 @@ func (m *PendingSweepsResponse) Reset() { *m = PendingSweepsResponse{} }
func (m *PendingSweepsResponse) String() string { return proto.CompactTextString(m) } func (m *PendingSweepsResponse) String() string { return proto.CompactTextString(m) }
func (*PendingSweepsResponse) ProtoMessage() {} func (*PendingSweepsResponse) ProtoMessage() {}
func (*PendingSweepsResponse) Descriptor() ([]byte, []int) { func (*PendingSweepsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{15} return fileDescriptor_6cc6942ac78249e5, []int{17}
} }
func (m *PendingSweepsResponse) XXX_Unmarshal(b []byte) error { func (m *PendingSweepsResponse) XXX_Unmarshal(b []byte) error {
@ -924,7 +1013,7 @@ func (m *BumpFeeRequest) Reset() { *m = BumpFeeRequest{} }
func (m *BumpFeeRequest) String() string { return proto.CompactTextString(m) } func (m *BumpFeeRequest) String() string { return proto.CompactTextString(m) }
func (*BumpFeeRequest) ProtoMessage() {} func (*BumpFeeRequest) ProtoMessage() {}
func (*BumpFeeRequest) Descriptor() ([]byte, []int) { func (*BumpFeeRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{16} return fileDescriptor_6cc6942ac78249e5, []int{18}
} }
func (m *BumpFeeRequest) XXX_Unmarshal(b []byte) error { func (m *BumpFeeRequest) XXX_Unmarshal(b []byte) error {
@ -983,7 +1072,7 @@ func (m *BumpFeeResponse) Reset() { *m = BumpFeeResponse{} }
func (m *BumpFeeResponse) String() string { return proto.CompactTextString(m) } func (m *BumpFeeResponse) String() string { return proto.CompactTextString(m) }
func (*BumpFeeResponse) ProtoMessage() {} func (*BumpFeeResponse) ProtoMessage() {}
func (*BumpFeeResponse) Descriptor() ([]byte, []int) { func (*BumpFeeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{17} return fileDescriptor_6cc6942ac78249e5, []int{19}
} }
func (m *BumpFeeResponse) XXX_Unmarshal(b []byte) error { func (m *BumpFeeResponse) XXX_Unmarshal(b []byte) error {
@ -1018,7 +1107,7 @@ func (m *ListSweepsRequest) Reset() { *m = ListSweepsRequest{} }
func (m *ListSweepsRequest) String() string { return proto.CompactTextString(m) } func (m *ListSweepsRequest) String() string { return proto.CompactTextString(m) }
func (*ListSweepsRequest) ProtoMessage() {} func (*ListSweepsRequest) ProtoMessage() {}
func (*ListSweepsRequest) Descriptor() ([]byte, []int) { func (*ListSweepsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{18} return fileDescriptor_6cc6942ac78249e5, []int{20}
} }
func (m *ListSweepsRequest) XXX_Unmarshal(b []byte) error { func (m *ListSweepsRequest) XXX_Unmarshal(b []byte) error {
@ -1060,7 +1149,7 @@ func (m *ListSweepsResponse) Reset() { *m = ListSweepsResponse{} }
func (m *ListSweepsResponse) String() string { return proto.CompactTextString(m) } func (m *ListSweepsResponse) String() string { return proto.CompactTextString(m) }
func (*ListSweepsResponse) ProtoMessage() {} func (*ListSweepsResponse) ProtoMessage() {}
func (*ListSweepsResponse) Descriptor() ([]byte, []int) { func (*ListSweepsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{19} return fileDescriptor_6cc6942ac78249e5, []int{21}
} }
func (m *ListSweepsResponse) XXX_Unmarshal(b []byte) error { func (m *ListSweepsResponse) XXX_Unmarshal(b []byte) error {
@ -1141,7 +1230,7 @@ func (m *ListSweepsResponse_TransactionIDs) Reset() { *m = ListSweepsRes
func (m *ListSweepsResponse_TransactionIDs) String() string { return proto.CompactTextString(m) } func (m *ListSweepsResponse_TransactionIDs) String() string { return proto.CompactTextString(m) }
func (*ListSweepsResponse_TransactionIDs) ProtoMessage() {} func (*ListSweepsResponse_TransactionIDs) ProtoMessage() {}
func (*ListSweepsResponse_TransactionIDs) Descriptor() ([]byte, []int) { func (*ListSweepsResponse_TransactionIDs) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{19, 0} return fileDescriptor_6cc6942ac78249e5, []int{21, 0}
} }
func (m *ListSweepsResponse_TransactionIDs) XXX_Unmarshal(b []byte) error { func (m *ListSweepsResponse_TransactionIDs) XXX_Unmarshal(b []byte) error {
@ -1185,7 +1274,7 @@ func (m *LabelTransactionRequest) Reset() { *m = LabelTransactionRequest
func (m *LabelTransactionRequest) String() string { return proto.CompactTextString(m) } func (m *LabelTransactionRequest) String() string { return proto.CompactTextString(m) }
func (*LabelTransactionRequest) ProtoMessage() {} func (*LabelTransactionRequest) ProtoMessage() {}
func (*LabelTransactionRequest) Descriptor() ([]byte, []int) { func (*LabelTransactionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{20} return fileDescriptor_6cc6942ac78249e5, []int{22}
} }
func (m *LabelTransactionRequest) XXX_Unmarshal(b []byte) error { func (m *LabelTransactionRequest) XXX_Unmarshal(b []byte) error {
@ -1237,7 +1326,7 @@ func (m *LabelTransactionResponse) Reset() { *m = LabelTransactionRespon
func (m *LabelTransactionResponse) String() string { return proto.CompactTextString(m) } func (m *LabelTransactionResponse) String() string { return proto.CompactTextString(m) }
func (*LabelTransactionResponse) ProtoMessage() {} func (*LabelTransactionResponse) ProtoMessage() {}
func (*LabelTransactionResponse) Descriptor() ([]byte, []int) { func (*LabelTransactionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_6cc6942ac78249e5, []int{21} return fileDescriptor_6cc6942ac78249e5, []int{23}
} }
func (m *LabelTransactionResponse) XXX_Unmarshal(b []byte) error { func (m *LabelTransactionResponse) XXX_Unmarshal(b []byte) error {
@ -1260,6 +1349,8 @@ var xxx_messageInfo_LabelTransactionResponse proto.InternalMessageInfo
func init() { func init() {
proto.RegisterEnum("walletrpc.WitnessType", WitnessType_name, WitnessType_value) proto.RegisterEnum("walletrpc.WitnessType", WitnessType_name, WitnessType_value)
proto.RegisterType((*ListUnspentRequest)(nil), "walletrpc.ListUnspentRequest")
proto.RegisterType((*ListUnspentResponse)(nil), "walletrpc.ListUnspentResponse")
proto.RegisterType((*LeaseOutputRequest)(nil), "walletrpc.LeaseOutputRequest") proto.RegisterType((*LeaseOutputRequest)(nil), "walletrpc.LeaseOutputRequest")
proto.RegisterType((*LeaseOutputResponse)(nil), "walletrpc.LeaseOutputResponse") proto.RegisterType((*LeaseOutputResponse)(nil), "walletrpc.LeaseOutputResponse")
proto.RegisterType((*ReleaseOutputRequest)(nil), "walletrpc.ReleaseOutputRequest") proto.RegisterType((*ReleaseOutputRequest)(nil), "walletrpc.ReleaseOutputRequest")
@ -1288,92 +1379,97 @@ func init() {
func init() { proto.RegisterFile("walletrpc/walletkit.proto", fileDescriptor_6cc6942ac78249e5) } func init() { proto.RegisterFile("walletrpc/walletkit.proto", fileDescriptor_6cc6942ac78249e5) }
var fileDescriptor_6cc6942ac78249e5 = []byte{ var fileDescriptor_6cc6942ac78249e5 = []byte{
// 1358 bytes of a gzipped FileDescriptorProto // 1428 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdf, 0x6f, 0x1a, 0xc7, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xff, 0x6f, 0xda, 0xc8,
0x13, 0x0f, 0xc6, 0x60, 0x18, 0x7e, 0x18, 0x2f, 0xd8, 0x26, 0xc4, 0x89, 0xf9, 0x5e, 0xf4, 0x6d, 0x12, 0x6f, 0xbe, 0x40, 0x60, 0x0c, 0x84, 0x2c, 0x24, 0xa1, 0x34, 0x6d, 0x52, 0x57, 0xef, 0xbd,
0xad, 0x36, 0xc1, 0xaa, 0xa3, 0x54, 0x4d, 0x2a, 0x55, 0xb5, 0xe1, 0x2c, 0x2c, 0x30, 0x38, 0x77, 0xe8, 0xbd, 0x96, 0xe8, 0xa5, 0xea, 0xa9, 0xed, 0x49, 0xa7, 0x4b, 0xc0, 0x11, 0x11, 0x04, 0x52,
0x97, 0x58, 0x69, 0x1f, 0x4e, 0x07, 0xb7, 0xc1, 0x27, 0xe3, 0xbb, 0xcb, 0xde, 0x12, 0xe0, 0xad, 0x43, 0x1a, 0xf5, 0xee, 0x07, 0xcb, 0xe0, 0x2d, 0xb1, 0x02, 0xb6, 0xbb, 0x5e, 0x8a, 0xf9, 0xed,
0x0f, 0xfd, 0x1b, 0x2a, 0xe5, 0xbf, 0xad, 0x76, 0xef, 0x07, 0x7b, 0x80, 0x5d, 0x55, 0xea, 0x93, 0xfe, 0x8a, 0x93, 0xfa, 0x6f, 0xdd, 0x5f, 0x74, 0xda, 0x5d, 0x63, 0xd6, 0x40, 0x7a, 0x3a, 0xe9,
0x6f, 0x3f, 0x33, 0xf3, 0x99, 0xd9, 0x99, 0x61, 0x76, 0x0c, 0x8f, 0xa7, 0xc6, 0x78, 0x8c, 0x29, 0x7e, 0x8a, 0x77, 0x3e, 0x33, 0x9f, 0x99, 0x9d, 0x99, 0xcc, 0x0e, 0xf0, 0x78, 0x62, 0x0e, 0x87,
0x71, 0x87, 0xc7, 0xfe, 0xd7, 0xad, 0x45, 0x1b, 0x2e, 0x71, 0xa8, 0x83, 0xb2, 0x91, 0xa8, 0x96, 0x98, 0x12, 0xaf, 0x7f, 0x22, 0xbe, 0xee, 0x6d, 0x5a, 0xf1, 0x88, 0x4b, 0x5d, 0x94, 0x8e, 0xa0,
0x25, 0xee, 0xd0, 0x47, 0x6b, 0x15, 0xcf, 0x1a, 0xd9, 0x4c, 0x9d, 0xfd, 0xc5, 0xc4, 0x47, 0xa5, 0x72, 0x9a, 0x78, 0x7d, 0x21, 0x2d, 0x17, 0x7d, 0x7b, 0xe0, 0x30, 0x75, 0xf6, 0x17, 0x13, 0x21,
0x77, 0x80, 0xba, 0xd8, 0xf0, 0x70, 0x7f, 0x42, 0xdd, 0x09, 0x55, 0xf0, 0xe7, 0x09, 0xf6, 0x28, 0x55, 0x5b, 0x80, 0x9a, 0xb6, 0x4f, 0x6f, 0x1c, 0xdf, 0xc3, 0x0e, 0xd5, 0xf1, 0x97, 0x31, 0xf6,
0x2a, 0xc2, 0x86, 0x65, 0x56, 0x13, 0xf5, 0xc4, 0x51, 0x5e, 0xd9, 0xb0, 0x4c, 0xf4, 0x3d, 0x64, 0x29, 0x7a, 0x02, 0xe9, 0x91, 0xed, 0x18, 0x7d, 0xd7, 0xf9, 0xec, 0x97, 0xd6, 0x8e, 0xd6, 0x8e,
0x9c, 0x09, 0x75, 0x1d, 0xcb, 0xa6, 0xd5, 0x8d, 0x7a, 0xe2, 0x28, 0x77, 0xb2, 0xdd, 0x18, 0x33, 0x13, 0x7a, 0x6a, 0x64, 0x3b, 0x55, 0x76, 0xe6, 0xa0, 0x19, 0x84, 0xe0, 0x7a, 0x08, 0x9a, 0x01,
0xb2, 0x46, 0x7f, 0x42, 0xaf, 0x18, 0xac, 0x44, 0x0a, 0xd2, 0x6b, 0x28, 0xc7, 0x28, 0x3d, 0xd7, 0x07, 0xd5, 0xb7, 0x50, 0x88, 0xf1, 0xf9, 0x9e, 0xeb, 0xf8, 0x18, 0x3d, 0x87, 0xc4, 0x98, 0x06,
0xb1, 0x3d, 0x8c, 0x9e, 0x01, 0xe0, 0x99, 0x6b, 0x11, 0x83, 0x5a, 0x8e, 0xcd, 0xb9, 0x37, 0x15, 0x2e, 0x23, 0xdb, 0x38, 0x56, 0x4e, 0x95, 0xca, 0x90, 0x85, 0x52, 0xb9, 0xa1, 0x81, 0xab, 0x0b,
0x01, 0x91, 0x54, 0xa8, 0x28, 0x78, 0xfc, 0x1f, 0xc7, 0xb2, 0x0f, 0xbb, 0x4b, 0xa4, 0x7e, 0x34, 0x44, 0xfd, 0x00, 0xa8, 0x89, 0x4d, 0x1f, 0xb7, 0xc7, 0xd4, 0x1b, 0x47, 0x91, 0xe4, 0x60, 0xdd,
0xd2, 0x3b, 0x48, 0x77, 0xf0, 0x5c, 0xc1, 0x9f, 0xd1, 0x11, 0x94, 0x6e, 0xf1, 0x5c, 0xff, 0x64, 0xb6, 0x78, 0x08, 0x19, 0x7d, 0xdd, 0xb6, 0xd0, 0xff, 0x20, 0xe5, 0x8e, 0xa9, 0xe7, 0xda, 0x0e,
0xd9, 0x23, 0x4c, 0x74, 0x97, 0x30, 0x5e, 0xe6, 0x2d, 0xa5, 0x14, 0x6f, 0xf1, 0xfc, 0x9c, 0xc3, 0xe5, 0xbe, 0x95, 0xd3, 0xed, 0x90, 0xab, 0x3d, 0xa6, 0xd7, 0x4c, 0xac, 0x47, 0x0a, 0xea, 0x1b,
0x57, 0x0c, 0x45, 0x4f, 0x01, 0xb8, 0xa6, 0x71, 0x67, 0x8d, 0xe7, 0xdc, 0x77, 0x4a, 0xc9, 0x32, 0x28, 0xc4, 0x28, 0xc3, 0x60, 0x9e, 0x01, 0xe0, 0xc0, 0xb3, 0x89, 0x49, 0x6d, 0xd7, 0xe1, 0xdc,
0x1d, 0x0e, 0x48, 0x05, 0xc8, 0x9d, 0x9a, 0x26, 0x09, 0xe2, 0x96, 0x24, 0xc8, 0xfb, 0xc7, 0xe0, 0x9b, 0xba, 0x24, 0x51, 0x3b, 0x50, 0xd4, 0xf1, 0xf0, 0x1f, 0x8e, 0x65, 0x1f, 0x76, 0x17, 0x48,
0xfe, 0x08, 0x36, 0x0d, 0xd3, 0x24, 0x9c, 0x3b, 0xab, 0xf0, 0x6f, 0xe9, 0x2d, 0xe4, 0x34, 0x62, 0x45, 0x34, 0xea, 0x07, 0x48, 0x36, 0xf0, 0x54, 0xc7, 0x5f, 0xd0, 0x31, 0xe4, 0xef, 0xf1, 0xd4,
0xd8, 0x9e, 0x31, 0x64, 0x29, 0x40, 0xbb, 0x90, 0xa6, 0x33, 0xfd, 0x06, 0xcf, 0x82, 0xeb, 0xa6, 0xf8, 0x6c, 0x3b, 0x03, 0x4c, 0x0c, 0x8f, 0x30, 0x5e, 0x91, 0xfc, 0xdc, 0x3d, 0x9e, 0x5e, 0x70,
0xe8, 0xac, 0x8d, 0x67, 0xa8, 0x02, 0xa9, 0xb1, 0x31, 0xc0, 0x63, 0xee, 0x32, 0xab, 0xf8, 0x07, 0xf1, 0x35, 0x93, 0xa2, 0xa7, 0x00, 0x5c, 0xd3, 0x1c, 0xd9, 0xc3, 0x69, 0x58, 0x83, 0x34, 0xd3,
0xe9, 0x47, 0xd8, 0xbe, 0x9a, 0x0c, 0xc6, 0x96, 0x77, 0x13, 0xb9, 0x78, 0x0e, 0x05, 0xd7, 0x87, 0xe1, 0x02, 0x35, 0x0b, 0xca, 0x99, 0x65, 0x91, 0x30, 0x6e, 0x55, 0x85, 0x8c, 0x38, 0x86, 0xf7,
0x74, 0x4c, 0x88, 0x13, 0xfa, 0xca, 0x07, 0xa0, 0xcc, 0x30, 0x89, 0x00, 0x52, 0xb1, 0x6d, 0xfa, 0x47, 0xb0, 0x69, 0x5a, 0x16, 0xe1, 0xdc, 0x69, 0x9d, 0x7f, 0xab, 0xef, 0x41, 0xe9, 0x12, 0xd3,
0xf9, 0xf0, 0xc2, 0x2c, 0x1f, 0x00, 0x78, 0x06, 0xd5, 0x5d, 0x4c, 0xf4, 0xdb, 0x29, 0xb7, 0x4b, 0xf1, 0xcd, 0x3e, 0x4b, 0x01, 0xda, 0x85, 0x24, 0x0d, 0x8c, 0x3b, 0x1c, 0x84, 0xd7, 0x4d, 0xd0,
0x2a, 0x19, 0xcf, 0xa0, 0x57, 0x98, 0x74, 0xa6, 0xe8, 0x08, 0xb6, 0x1c, 0x5f, 0xbf, 0xba, 0x51, 0xa0, 0x8e, 0x03, 0x54, 0x84, 0xc4, 0xd0, 0xec, 0xe1, 0x21, 0x77, 0x99, 0xd6, 0xc5, 0x41, 0xfd,
0x4f, 0x1e, 0xe5, 0x4e, 0x8a, 0x8d, 0xa0, 0x9b, 0x1a, 0xda, 0xac, 0x3f, 0xa1, 0x4a, 0x28, 0x5e, 0x01, 0xb6, 0xaf, 0xc7, 0xbd, 0xa1, 0xed, 0xdf, 0x45, 0x2e, 0x5e, 0x40, 0xd6, 0x13, 0x22, 0x03,
0xc4, 0x9a, 0x14, 0x63, 0x7d, 0x01, 0xe5, 0x98, 0xcf, 0x20, 0xde, 0x5d, 0x48, 0x13, 0x63, 0xaa, 0x13, 0xe2, 0xce, 0x7c, 0x65, 0x42, 0xa1, 0xc6, 0x64, 0x2a, 0x01, 0xd4, 0xc1, 0x8e, 0x25, 0xf2,
0xd3, 0xe8, 0xbe, 0xc4, 0x98, 0x6a, 0x33, 0xe9, 0x35, 0x20, 0xd9, 0xa3, 0xd6, 0x9d, 0x41, 0xf1, 0xe1, 0xcf, 0xb2, 0x7c, 0x00, 0xe0, 0x9b, 0xd4, 0xf0, 0x30, 0x31, 0xee, 0x27, 0xdc, 0x6e, 0x43,
0x39, 0xc6, 0x61, 0x84, 0x87, 0x90, 0x1b, 0x3a, 0xf6, 0x27, 0x9d, 0x1a, 0x64, 0x84, 0xc3, 0x12, 0x4f, 0xf9, 0x26, 0xbd, 0xc6, 0xa4, 0x31, 0x41, 0xc7, 0xb0, 0xe5, 0x0a, 0xfd, 0xd2, 0x3a, 0x6f,
0x01, 0x83, 0x34, 0x8e, 0x48, 0xaf, 0xa0, 0x1c, 0x33, 0x0b, 0x9c, 0x3c, 0x78, 0x33, 0xe9, 0x6b, 0xa5, 0x5c, 0x25, 0xec, 0xeb, 0x4a, 0x37, 0x68, 0x8f, 0xa9, 0x3e, 0x83, 0xe7, 0xb1, 0x6e, 0xc8,
0x12, 0xf2, 0x57, 0xd8, 0x36, 0x2d, 0x7b, 0xa4, 0x4e, 0x31, 0x76, 0x63, 0xed, 0x95, 0xf8, 0x87, 0xb1, 0xbe, 0x84, 0x42, 0xcc, 0x67, 0x18, 0xef, 0x2e, 0x24, 0x89, 0x39, 0x31, 0x68, 0x74, 0x5f,
0xf6, 0x42, 0x6f, 0x20, 0x3f, 0xb5, 0xa8, 0x8d, 0x3d, 0x4f, 0xa7, 0x73, 0x17, 0xf3, 0x02, 0x15, 0x62, 0x4e, 0xba, 0x81, 0xfa, 0x06, 0x90, 0xe6, 0x53, 0x7b, 0x64, 0x52, 0x7c, 0x81, 0xf1, 0x2c,
0x4f, 0xf6, 0x1a, 0xd1, 0x0f, 0xb0, 0x71, 0xed, 0x8b, 0xb5, 0xb9, 0x8b, 0x95, 0xdc, 0x74, 0x71, 0xc2, 0x43, 0x50, 0x58, 0xf3, 0x1b, 0xd4, 0x24, 0x03, 0x3c, 0x2b, 0x11, 0x30, 0x51, 0x97, 0x4b,
0x60, 0xcd, 0x64, 0xdc, 0x39, 0x13, 0x9b, 0xea, 0x9e, 0x41, 0x79, 0xb6, 0x0a, 0x4a, 0xd6, 0x47, 0xd4, 0xd7, 0x50, 0x88, 0x99, 0x85, 0x4e, 0xbe, 0x7b, 0x33, 0xf5, 0xdb, 0x06, 0x64, 0xae, 0xb1,
0x54, 0x83, 0xa2, 0x3a, 0xe4, 0xc3, 0xa8, 0x07, 0x73, 0x8a, 0xab, 0x9b, 0x5c, 0x01, 0xfc, 0xb8, 0x63, 0xd9, 0xce, 0xa0, 0x33, 0xc1, 0xd8, 0x8b, 0xb5, 0xd7, 0xda, 0x5f, 0xb4, 0x17, 0x7a, 0x07,
0xcf, 0xe6, 0x14, 0xa3, 0x97, 0x80, 0x06, 0xc4, 0x31, 0xcc, 0xa1, 0xe1, 0x51, 0xdd, 0xa0, 0x14, 0x99, 0x89, 0x4d, 0x1d, 0xec, 0xfb, 0x06, 0x9d, 0x7a, 0x98, 0x17, 0x28, 0x77, 0xba, 0x57, 0x89,
0xdf, 0xb9, 0xd4, 0xab, 0xa6, 0xb8, 0xde, 0x4e, 0x24, 0x39, 0x0d, 0x04, 0xe8, 0x04, 0x76, 0x6d, 0x46, 0x41, 0xe5, 0x56, 0xc0, 0xdd, 0xa9, 0x87, 0x75, 0x65, 0x32, 0x3f, 0xb0, 0x66, 0x32, 0x47,
0x3c, 0xa3, 0xfa, 0xc2, 0xe6, 0x06, 0x5b, 0xa3, 0x1b, 0x5a, 0x4d, 0x73, 0x8b, 0x32, 0x13, 0x9e, 0xee, 0xd8, 0xa1, 0x86, 0x6f, 0x52, 0x9e, 0xad, 0xac, 0x9e, 0x16, 0x92, 0x8e, 0x49, 0xd1, 0x11,
0x85, 0xb2, 0x36, 0x17, 0x31, 0x1b, 0xe2, 0x67, 0x1f, 0x9b, 0xba, 0x98, 0xfc, 0x8c, 0x6f, 0x13, 0x64, 0x66, 0x51, 0xf7, 0xa6, 0x14, 0x97, 0x36, 0xb9, 0x02, 0x88, 0xb8, 0xcf, 0xa7, 0x14, 0xa3,
0x09, 0x9b, 0x51, 0x15, 0xd0, 0x2b, 0xd8, 0x5b, 0xd8, 0xc4, 0xae, 0x90, 0x5d, 0x32, 0x52, 0x17, 0x57, 0x80, 0x7a, 0xc4, 0x35, 0xad, 0xbe, 0xe9, 0x53, 0xc3, 0xa4, 0x14, 0x8f, 0x3c, 0xea, 0x97,
0x77, 0xa9, 0x40, 0xea, 0x93, 0x43, 0x86, 0xb8, 0xba, 0x55, 0x4f, 0x1c, 0x65, 0x14, 0xff, 0x20, 0x12, 0x5c, 0x6f, 0x27, 0x42, 0xce, 0x42, 0x00, 0x9d, 0xc2, 0xae, 0x83, 0x03, 0x6a, 0xcc, 0x6d,
0xed, 0x41, 0x45, 0x2c, 0x4d, 0xd8, 0xab, 0xd2, 0x35, 0xec, 0x2e, 0xe1, 0x41, 0xa9, 0x7f, 0x81, 0xee, 0xb0, 0x3d, 0xb8, 0xa3, 0xa5, 0x24, 0xb7, 0x28, 0x30, 0xf0, 0x7c, 0x86, 0xd5, 0x39, 0xc4,
0xa2, 0xeb, 0x0b, 0x74, 0x8f, 0x4b, 0xaa, 0x09, 0xde, 0xad, 0xfb, 0x42, 0x41, 0x44, 0x4b, 0xa5, 0x6c, 0x88, 0xc8, 0x3e, 0xb6, 0x0c, 0x39, 0xf9, 0x29, 0x61, 0x13, 0x81, 0xd5, 0xa8, 0x0a, 0xe8,
0xe0, 0x8a, 0x3c, 0xd2, 0x5f, 0x09, 0x28, 0x9e, 0x4d, 0xee, 0x5c, 0xa1, 0xeb, 0xfe, 0x55, 0x3b, 0x35, 0xec, 0xcd, 0x6d, 0x62, 0x57, 0x48, 0x2f, 0x18, 0x75, 0xe6, 0x77, 0x29, 0x42, 0xe2, 0xb3,
0x1c, 0x42, 0xce, 0x4f, 0x10, 0x4f, 0x16, 0xef, 0x86, 0x82, 0x02, 0x3e, 0xc4, 0x52, 0xb4, 0x52, 0x4b, 0xfa, 0xb8, 0xb4, 0x75, 0xb4, 0x76, 0x9c, 0xd2, 0xc5, 0x41, 0xdd, 0x83, 0xa2, 0x5c, 0x9a,
0xd5, 0xe4, 0x4a, 0x55, 0xa3, 0x4c, 0x6c, 0x8a, 0x99, 0xd8, 0x81, 0xed, 0x28, 0xae, 0x60, 0x80, 0x59, 0xaf, 0xaa, 0xb7, 0xb0, 0xbb, 0x20, 0x0f, 0x4b, 0xfd, 0x13, 0xe4, 0x3c, 0x01, 0x18, 0x3e,
0xbd, 0x84, 0x9d, 0xae, 0xe5, 0xd1, 0x58, 0x66, 0x50, 0x15, 0xb6, 0xbe, 0x60, 0x32, 0x70, 0x3c, 0x47, 0xc2, 0xc1, 0xb7, 0x2f, 0x15, 0x44, 0xb6, 0xd4, 0xb3, 0x9e, 0xcc, 0xa3, 0xfe, 0xbe, 0x06,
0xcc, 0x83, 0xcd, 0x28, 0xe1, 0x51, 0xfa, 0x63, 0x03, 0x90, 0xa8, 0x1f, 0x64, 0xac, 0x0b, 0x65, 0xb9, 0xf3, 0xf1, 0xc8, 0x93, 0xba, 0xee, 0x6f, 0xb5, 0xc3, 0x21, 0x28, 0x22, 0x41, 0x3c, 0x59,
0xba, 0x18, 0x40, 0xba, 0x89, 0xa9, 0x61, 0x8d, 0xbd, 0xe0, 0xa6, 0x8f, 0x83, 0x9b, 0x0a, 0x23, 0xbc, 0x1b, 0xb2, 0x3a, 0x08, 0x11, 0x4b, 0xd1, 0x52, 0x55, 0x37, 0x96, 0xaa, 0x1a, 0x65, 0x62,
0xaa, 0xe5, 0x2b, 0xb4, 0x1f, 0x29, 0x88, 0xae, 0xa0, 0xe8, 0x1a, 0xb6, 0x45, 0x36, 0xcb, 0xf4, 0x53, 0xce, 0xc4, 0x0e, 0x6c, 0x47, 0x71, 0x85, 0x03, 0xec, 0x15, 0xec, 0xb0, 0x91, 0x1f, 0xcb,
0x82, 0x09, 0xfd, 0x42, 0x28, 0xc0, 0x6a, 0x14, 0xa2, 0x83, 0x8b, 0x16, 0x23, 0x2f, 0x0a, 0x34, 0x0c, 0x2a, 0xc1, 0xd6, 0x57, 0x4c, 0x7a, 0xae, 0x8f, 0x79, 0xb0, 0x29, 0x7d, 0x76, 0x54, 0x7f,
0x17, 0xa6, 0x57, 0x7b, 0x03, 0xc5, 0xb8, 0x0e, 0xfa, 0x76, 0xd5, 0x15, 0xab, 0x75, 0x76, 0xd9, 0x5b, 0x17, 0x4f, 0xce, 0x42, 0xc6, 0x9a, 0x50, 0xa0, 0xf3, 0x01, 0x64, 0x58, 0x98, 0x9a, 0xf6,
0xf4, 0x2c, 0x03, 0x69, 0xbf, 0x17, 0x24, 0x03, 0xf6, 0xbb, 0x6c, 0x1a, 0x09, 0x4c, 0x61, 0xde, 0xd0, 0x0f, 0x6f, 0xfa, 0x38, 0xbc, 0xa9, 0x34, 0xa2, 0x6a, 0x42, 0xa1, 0xfe, 0x48, 0x47, 0x74,
0x10, 0x6c, 0xd2, 0x59, 0xf4, 0xca, 0xf0, 0xef, 0xf5, 0x53, 0x17, 0x1d, 0x40, 0xd6, 0xf9, 0x82, 0x49, 0x8a, 0x6e, 0x61, 0x5b, 0x66, 0xb3, 0x2d, 0x3f, 0x9c, 0xd0, 0x2f, 0xa5, 0x02, 0x2c, 0x47,
0xc9, 0x94, 0x58, 0x41, 0xf9, 0x32, 0xca, 0x02, 0x90, 0x6a, 0x50, 0x5d, 0x75, 0xe1, 0x5f, 0xf2, 0x21, 0x3b, 0xb8, 0xac, 0x31, 0xf2, 0x9c, 0x44, 0x73, 0x69, 0xf9, 0xe5, 0x77, 0x90, 0x8b, 0xeb,
0xbb, 0xaf, 0x49, 0xc8, 0x09, 0xd3, 0x00, 0x95, 0x61, 0xfb, 0x7d, 0xaf, 0xd3, 0xeb, 0x5f, 0xf7, 0xa0, 0xff, 0x2c, 0xbb, 0x62, 0xb5, 0x4e, 0x2f, 0x9a, 0x9e, 0xa7, 0x20, 0x29, 0x7a, 0x41, 0x35,
0xf4, 0xeb, 0x0b, 0xad, 0x27, 0xab, 0x6a, 0xe9, 0x11, 0xaa, 0x42, 0xa5, 0xd9, 0xbf, 0xbc, 0xbc, 0x61, 0xbf, 0xc9, 0xa6, 0x91, 0xc4, 0x34, 0xcb, 0x1b, 0x82, 0x4d, 0x1a, 0x44, 0xaf, 0x0c, 0xff,
0xd0, 0x2e, 0xe5, 0x9e, 0xa6, 0x6b, 0x17, 0x97, 0xb2, 0xde, 0xed, 0x37, 0x3b, 0xa5, 0x04, 0xda, 0x5e, 0x3d, 0x75, 0xd1, 0x01, 0xa4, 0xdd, 0xaf, 0x98, 0x4c, 0x88, 0x1d, 0x96, 0x2f, 0xa5, 0xcf,
0x87, 0xb2, 0x20, 0xe9, 0xf5, 0xf5, 0x96, 0xdc, 0x3d, 0xfd, 0x58, 0xda, 0x40, 0xbb, 0xb0, 0x23, 0x05, 0x6a, 0x19, 0x4a, 0xcb, 0x2e, 0xc4, 0x25, 0xff, 0xfb, 0x6d, 0x03, 0x14, 0x69, 0x1a, 0xa0,
0x08, 0x14, 0xf9, 0x43, 0xbf, 0x23, 0x97, 0x92, 0x4c, 0xbf, 0xad, 0x75, 0x9b, 0x7a, 0xff, 0xfc, 0x02, 0x6c, 0xdf, 0xb4, 0x1a, 0xad, 0xf6, 0x6d, 0xcb, 0xb8, 0xbd, 0xec, 0xb6, 0xb4, 0x4e, 0x27,
0x5c, 0x56, 0xe4, 0x56, 0x28, 0xd8, 0x64, 0x2e, 0xb8, 0xe0, 0xb4, 0xd9, 0x94, 0xaf, 0xb4, 0x85, 0xff, 0x08, 0x95, 0xa0, 0x58, 0x6d, 0x5f, 0x5d, 0x5d, 0x76, 0xaf, 0xb4, 0x56, 0xd7, 0xe8, 0x5e,
0x24, 0x85, 0xfe, 0x0f, 0xff, 0x8b, 0x99, 0x30, 0xf7, 0xfd, 0xf7, 0x9a, 0xae, 0xca, 0xcd, 0x7e, 0x5e, 0x69, 0x46, 0xb3, 0x5d, 0x6d, 0xe4, 0xd7, 0xd0, 0x3e, 0x14, 0x24, 0xa4, 0xd5, 0x36, 0x6a,
0xaf, 0xa5, 0x77, 0xe5, 0x0f, 0x72, 0xb7, 0x94, 0x46, 0xdf, 0x80, 0x14, 0x27, 0x50, 0xdf, 0x37, 0x5a, 0xf3, 0xec, 0x53, 0x7e, 0x1d, 0xed, 0xc2, 0x8e, 0x04, 0xe8, 0xda, 0xc7, 0x76, 0x43, 0xcb,
0x9b, 0xb2, 0xaa, 0xc6, 0xf5, 0xb6, 0xd0, 0x21, 0x3c, 0x59, 0x8a, 0xe0, 0xb2, 0xaf, 0xc9, 0x21, 0x6f, 0x30, 0xfd, 0x7a, 0xb7, 0x59, 0x35, 0xda, 0x17, 0x17, 0x9a, 0xae, 0xd5, 0x66, 0xc0, 0x26,
0x6b, 0x29, 0x83, 0xea, 0x70, 0xb0, 0x1c, 0x09, 0xd7, 0x08, 0xf8, 0x4a, 0x59, 0x74, 0x00, 0x55, 0x73, 0xc1, 0x81, 0xb3, 0x6a, 0x55, 0xbb, 0xee, 0xce, 0x91, 0x04, 0xfa, 0x17, 0x3c, 0x8f, 0x99,
0xae, 0x21, 0x32, 0x87, 0xf1, 0x02, 0xaa, 0x40, 0x29, 0xc8, 0x9c, 0xde, 0x91, 0x3f, 0xea, 0xed, 0x30, 0xf7, 0xed, 0x9b, 0xae, 0xd1, 0xd1, 0xaa, 0xed, 0x56, 0xcd, 0x68, 0x6a, 0x1f, 0xb5, 0x66,
0x53, 0xb5, 0x5d, 0xca, 0xa1, 0x27, 0xb0, 0xdf, 0x93, 0x55, 0x46, 0xb7, 0x22, 0xcc, 0x2f, 0x25, 0x3e, 0x89, 0xfe, 0x0d, 0x6a, 0x9c, 0xa0, 0x73, 0x53, 0xad, 0x6a, 0x9d, 0x4e, 0x5c, 0x6f, 0x0b,
0xeb, 0xb4, 0xd7, 0x6c, 0xf7, 0x95, 0x52, 0xe1, 0xe4, 0xcf, 0x2d, 0xc8, 0x5e, 0xf3, 0x0e, 0xed, 0x1d, 0xc2, 0x93, 0x85, 0x08, 0xae, 0xda, 0x5d, 0x6d, 0xc6, 0x9a, 0x4f, 0xa1, 0x23, 0x38, 0x58,
0x58, 0x14, 0x75, 0x21, 0x27, 0x2c, 0x30, 0xe8, 0xa9, 0xd8, 0xbc, 0x2b, 0xfb, 0x49, 0xed, 0xd9, 0x8c, 0x84, 0x6b, 0x84, 0x7c, 0xf9, 0x34, 0x3a, 0x80, 0x12, 0xd7, 0x90, 0x99, 0x67, 0xf1, 0x02,
0x7d, 0xe2, 0xe0, 0x27, 0xa6, 0x40, 0x21, 0xb6, 0x82, 0xa0, 0x43, 0xc1, 0x60, 0xdd, 0xc6, 0x53, 0x2a, 0x42, 0x3e, 0xcc, 0x9c, 0xd1, 0xd0, 0x3e, 0x19, 0xf5, 0xb3, 0x4e, 0x3d, 0xaf, 0xa0, 0x27,
0xab, 0xdf, 0xaf, 0x10, 0x70, 0xbe, 0x85, 0x42, 0x0b, 0x13, 0xeb, 0x0b, 0xee, 0xe1, 0x19, 0xed, 0xb0, 0xdf, 0xd2, 0x3a, 0x8c, 0x6e, 0x09, 0xcc, 0x2c, 0x24, 0xeb, 0xac, 0x55, 0xad, 0xb7, 0xf5,
0xe0, 0x39, 0xda, 0x11, 0x4c, 0xfc, 0xbd, 0xa6, 0xb6, 0x17, 0x3d, 0xd1, 0x1d, 0x3c, 0x6f, 0x61, 0x7c, 0xf6, 0xf4, 0x8f, 0x2d, 0x48, 0xdf, 0xf2, 0x0e, 0x6d, 0xd8, 0x14, 0x35, 0x41, 0x91, 0xb6,
0x6f, 0x48, 0x2c, 0x97, 0x3a, 0x04, 0xfd, 0x04, 0x59, 0xdf, 0x96, 0xd9, 0x95, 0x45, 0xa5, 0xae, 0x29, 0xf4, 0x74, 0xa1, 0x79, 0xe3, 0x5b, 0x5b, 0xf9, 0xd9, 0x43, 0x70, 0xf4, 0x2f, 0xa6, 0x48,
0x33, 0x34, 0xa8, 0x43, 0xee, 0xb5, 0xfc, 0x19, 0x32, 0xcc, 0x1f, 0xdb, 0x6a, 0x90, 0xf8, 0xc6, 0xeb, 0x50, 0x9c, 0x6d, 0x69, 0xdb, 0x89, 0xb3, 0xad, 0xd8, 0xa2, 0x74, 0xc8, 0xc6, 0x16, 0x1a,
0x09, 0x5b, 0x4f, 0x6d, 0x7f, 0x05, 0x0f, 0x42, 0x6e, 0x03, 0x0a, 0xd6, 0x15, 0x71, 0xe3, 0x11, 0x74, 0x28, 0x19, 0xac, 0xda, 0x9f, 0xca, 0x47, 0x0f, 0x2b, 0x84, 0x9c, 0xef, 0x21, 0x5b, 0xc3,
0x69, 0x04, 0xbc, 0x56, 0x13, 0x27, 0xf6, 0xd2, 0x96, 0xd3, 0x85, 0x9c, 0xb0, 0x4c, 0xc4, 0xca, 0xc4, 0xfe, 0x8a, 0x5b, 0x38, 0xa0, 0x0d, 0x3c, 0x45, 0x3b, 0x92, 0x89, 0xd8, 0x92, 0xca, 0x7b,
0xb3, 0xba, 0xd8, 0xc4, 0xca, 0xb3, 0x6e, 0x07, 0xe9, 0x42, 0x4e, 0xd8, 0x1a, 0x62, 0x6c, 0xab, 0xd1, 0x83, 0xdf, 0xc0, 0xd3, 0x1a, 0xf6, 0xfb, 0xc4, 0xf6, 0xa8, 0x4b, 0xd0, 0x5b, 0x48, 0x0b,
0x4b, 0x48, 0x8c, 0x6d, 0xdd, 0xb2, 0xa1, 0x40, 0x21, 0xf6, 0x34, 0xc5, 0x8a, 0xbd, 0xee, 0x31, 0x5b, 0x66, 0x57, 0x90, 0x95, 0x9a, 0x6e, 0xdf, 0xa4, 0x2e, 0x79, 0xd0, 0xf2, 0x47, 0x48, 0x31,
0x8b, 0x15, 0x7b, 0xfd, 0xab, 0xf6, 0x2b, 0x6c, 0x05, 0xc3, 0x1f, 0x3d, 0x16, 0x94, 0xe3, 0x0f, 0x7f, 0x6c, 0x47, 0x42, 0xf2, 0x8b, 0x29, 0xed, 0x50, 0xe5, 0xfd, 0x25, 0x79, 0x18, 0x72, 0x1d,
0x55, 0x2c, 0x63, 0x4b, 0x6f, 0x05, 0xba, 0x00, 0x58, 0x4c, 0x5d, 0x74, 0x70, 0xcf, 0x30, 0xf6, 0x50, 0xb8, 0xfc, 0xc8, 0xfb, 0x93, 0x4c, 0x23, 0xc9, 0xcb, 0x65, 0x79, 0xfe, 0x2f, 0xec, 0x4c,
0x79, 0x9e, 0x3e, 0x38, 0xaa, 0xd1, 0xef, 0x50, 0x5a, 0x9e, 0x70, 0x48, 0x12, 0x4d, 0xd6, 0x4f, 0x4d, 0x50, 0xa4, 0xd5, 0x24, 0x56, 0x9e, 0xe5, 0x35, 0x29, 0x56, 0x9e, 0x55, 0x1b, 0x4d, 0x13,
0xd8, 0xda, 0xf3, 0x07, 0x75, 0x7c, 0xf2, 0xb3, 0x1f, 0x7e, 0x3b, 0x1e, 0x59, 0xf4, 0x66, 0x32, 0x14, 0x69, 0x07, 0x89, 0xb1, 0x2d, 0xaf, 0x34, 0x31, 0xb6, 0x55, 0xab, 0x8b, 0x0e, 0xd9, 0xd8,
0x68, 0x0c, 0x9d, 0xbb, 0xe3, 0x31, 0xdb, 0x41, 0x6c, 0xcb, 0x1e, 0xd9, 0x98, 0x4e, 0x1d, 0x72, 0x43, 0x17, 0x2b, 0xf6, 0xaa, 0xa7, 0x31, 0x56, 0xec, 0xd5, 0x6f, 0xe4, 0xcf, 0xb0, 0x15, 0x3e,
0x7b, 0x3c, 0xb6, 0xcd, 0x63, 0xfe, 0x22, 0x1d, 0x47, 0x5c, 0x83, 0x34, 0xff, 0x37, 0xe6, 0xd5, 0x25, 0xe8, 0xb1, 0xa4, 0x1c, 0x7f, 0xf6, 0x62, 0x19, 0x5b, 0x78, 0x79, 0xd0, 0x25, 0xc0, 0x7c,
0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xea, 0x15, 0x92, 0x8b, 0x0f, 0x0d, 0x00, 0x00, 0x86, 0xa3, 0x83, 0x07, 0x46, 0xbb, 0xe0, 0x79, 0xfa, 0xdd, 0xc1, 0x8f, 0x7e, 0x85, 0xfc, 0xe2,
0xbc, 0x44, 0xaa, 0x6c, 0xb2, 0x7a, 0x5e, 0x97, 0x5f, 0x7c, 0x57, 0x47, 0x90, 0x9f, 0xff, 0xff,
0x97, 0x93, 0x81, 0x4d, 0xef, 0xc6, 0xbd, 0x4a, 0xdf, 0x1d, 0x9d, 0x0c, 0xd9, 0x46, 0xe3, 0xd8,
0xce, 0xc0, 0xc1, 0x74, 0xe2, 0x92, 0xfb, 0x93, 0xa1, 0x63, 0x9d, 0xf0, 0xf7, 0xed, 0x24, 0xe2,
0xea, 0x25, 0xf9, 0xcf, 0xb3, 0xd7, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x01, 0xb2, 0xa4, 0x25,
0xe7, 0x0d, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -1388,6 +1484,10 @@ const _ = grpc.SupportPackageIsVersion4
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type WalletKitClient interface { type WalletKitClient interface {
//
//ListUnspent returns a list of all utxos spendable by the wallet with a
//number of confirmations between the specified minimum and maximum.
ListUnspent(ctx context.Context, in *ListUnspentRequest, opts ...grpc.CallOption) (*ListUnspentResponse, error)
// //
//LeaseOutput locks an output to the given ID, preventing it from being //LeaseOutput locks an output to the given ID, preventing it from being
//available for any future coin selection attempts. The absolute time of the //available for any future coin selection attempts. The absolute time of the
@ -1486,6 +1586,15 @@ func NewWalletKitClient(cc *grpc.ClientConn) WalletKitClient {
return &walletKitClient{cc} return &walletKitClient{cc}
} }
func (c *walletKitClient) ListUnspent(ctx context.Context, in *ListUnspentRequest, opts ...grpc.CallOption) (*ListUnspentResponse, error) {
out := new(ListUnspentResponse)
err := c.cc.Invoke(ctx, "/walletrpc.WalletKit/ListUnspent", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *walletKitClient) LeaseOutput(ctx context.Context, in *LeaseOutputRequest, opts ...grpc.CallOption) (*LeaseOutputResponse, error) { func (c *walletKitClient) LeaseOutput(ctx context.Context, in *LeaseOutputRequest, opts ...grpc.CallOption) (*LeaseOutputResponse, error) {
out := new(LeaseOutputResponse) out := new(LeaseOutputResponse)
err := c.cc.Invoke(ctx, "/walletrpc.WalletKit/LeaseOutput", in, out, opts...) err := c.cc.Invoke(ctx, "/walletrpc.WalletKit/LeaseOutput", in, out, opts...)
@ -1596,6 +1705,10 @@ func (c *walletKitClient) LabelTransaction(ctx context.Context, in *LabelTransac
// WalletKitServer is the server API for WalletKit service. // WalletKitServer is the server API for WalletKit service.
type WalletKitServer interface { type WalletKitServer interface {
//
//ListUnspent returns a list of all utxos spendable by the wallet with a
//number of confirmations between the specified minimum and maximum.
ListUnspent(context.Context, *ListUnspentRequest) (*ListUnspentResponse, error)
// //
//LeaseOutput locks an output to the given ID, preventing it from being //LeaseOutput locks an output to the given ID, preventing it from being
//available for any future coin selection attempts. The absolute time of the //available for any future coin selection attempts. The absolute time of the
@ -1690,6 +1803,24 @@ func RegisterWalletKitServer(s *grpc.Server, srv WalletKitServer) {
s.RegisterService(&_WalletKit_serviceDesc, srv) s.RegisterService(&_WalletKit_serviceDesc, srv)
} }
func _WalletKit_ListUnspent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListUnspentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WalletKitServer).ListUnspent(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/walletrpc.WalletKit/ListUnspent",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WalletKitServer).ListUnspent(ctx, req.(*ListUnspentRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WalletKit_LeaseOutput_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _WalletKit_LeaseOutput_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(LeaseOutputRequest) in := new(LeaseOutputRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -1910,6 +2041,10 @@ var _WalletKit_serviceDesc = grpc.ServiceDesc{
ServiceName: "walletrpc.WalletKit", ServiceName: "walletrpc.WalletKit",
HandlerType: (*WalletKitServer)(nil), HandlerType: (*WalletKitServer)(nil),
Methods: []grpc.MethodDesc{ Methods: []grpc.MethodDesc{
{
MethodName: "ListUnspent",
Handler: _WalletKit_ListUnspent_Handler,
},
{ {
MethodName: "LeaseOutput", MethodName: "LeaseOutput",
Handler: _WalletKit_LeaseOutput_Handler, Handler: _WalletKit_LeaseOutput_Handler,

@ -10,6 +10,12 @@ option go_package = "github.com/lightningnetwork/lnd/lnrpc/walletrpc";
// WalletKit is a service that gives access to the core functionalities of the // WalletKit is a service that gives access to the core functionalities of the
// daemon's wallet. // daemon's wallet.
service WalletKit { service WalletKit {
/*
ListUnspent returns a list of all utxos spendable by the wallet with a
number of confirmations between the specified minimum and maximum.
*/
rpc ListUnspent (ListUnspentRequest) returns (ListUnspentResponse);
/* /*
LeaseOutput locks an output to the given ID, preventing it from being LeaseOutput locks an output to the given ID, preventing it from being
available for any future coin selection attempts. The absolute time of the available for any future coin selection attempts. The absolute time of the
@ -124,6 +130,19 @@ service WalletKit {
returns (LabelTransactionResponse); returns (LabelTransactionResponse);
} }
message ListUnspentRequest {
// The minimum number of confirmations to be included.
int32 min_confs = 1;
// The maximum number of confirmations to be included.
int32 max_confs = 2;
}
message ListUnspentResponse {
// A list of utxos satisfying the specified number of confirmations.
repeated lnrpc.Utxo utxos = 1;
}
message LeaseOutputRequest { message LeaseOutputRequest {
/* /*
An ID of 32 random bytes that must be unique for each distinct application An ID of 32 random bytes that must be unique for each distinct application

@ -28,6 +28,18 @@
} }
} }
}, },
"lnrpcAddressType": {
"type": "string",
"enum": [
"WITNESS_PUBKEY_HASH",
"NESTED_PUBKEY_HASH",
"UNUSED_WITNESS_PUBKEY_HASH",
"UNUSED_NESTED_PUBKEY_HASH"
],
"default": "WITNESS_PUBKEY_HASH",
"description": "- `p2wkh`: Pay to witness key hash (`WITNESS_PUBKEY_HASH` = 0)\n- `np2wkh`: Pay to nested witness key hash (`NESTED_PUBKEY_HASH` = 1)",
"title": "`AddressType` has to be one of:"
},
"lnrpcOutPoint": { "lnrpcOutPoint": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -112,6 +124,37 @@
} }
} }
}, },
"lnrpcUtxo": {
"type": "object",
"properties": {
"address_type": {
"$ref": "#/definitions/lnrpcAddressType",
"title": "The type of address"
},
"address": {
"type": "string",
"title": "The address"
},
"amount_sat": {
"type": "string",
"format": "int64",
"title": "The value of the unspent coin in satoshis"
},
"pk_script": {
"type": "string",
"title": "The pkscript in hex"
},
"outpoint": {
"$ref": "#/definitions/lnrpcOutPoint",
"title": "The outpoint in format txid:n"
},
"confirmations": {
"type": "string",
"format": "int64",
"title": "The number of confirmations for the Utxo"
}
}
},
"signrpcKeyDescriptor": { "signrpcKeyDescriptor": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -202,6 +245,18 @@
} }
} }
}, },
"walletrpcListUnspentResponse": {
"type": "object",
"properties": {
"utxos": {
"type": "array",
"items": {
"$ref": "#/definitions/lnrpcUtxo"
},
"description": "A list of utxos satisfying the specified number of confirmations."
}
}
},
"walletrpcPendingSweep": { "walletrpcPendingSweep": {
"type": "object", "type": "object",
"properties": { "properties": {

@ -107,6 +107,10 @@ var (
Entity: "onchain", Entity: "onchain",
Action: "write", Action: "write",
}}, }},
"/walletrpc.WalletKit/ListUnspent": {{
Entity: "onchain",
Action: "read",
}},
} }
// DefaultWalletKitMacFilename is the default name of the wallet kit // DefaultWalletKitMacFilename is the default name of the wallet kit
@ -213,6 +217,39 @@ func (w *WalletKit) RegisterWithRootServer(grpcServer *grpc.Server) error {
return nil return nil
} }
// ListUnspent returns useful information about each unspent output owned by the
// wallet, as reported by the underlying `ListUnspentWitness`; the information
// returned is: outpoint, amount in satoshis, address, address type,
// scriptPubKey in hex and number of confirmations. The result is filtered to
// contain outputs whose number of confirmations is between a
// minimum and maximum number of confirmations specified by the user, with 0
// meaning unconfirmed.
func (w *WalletKit) ListUnspent(ctx context.Context,
req *ListUnspentRequest) (*ListUnspentResponse, error) {
// Validate the confirmation arguments.
minConfs, maxConfs, err := lnrpc.ParseConfs(req.MinConfs, req.MaxConfs)
if err != nil {
return nil, err
}
// With our arguments validated, we'll query the internal wallet for
// the set of UTXOs that match our query.
utxos, err := w.cfg.Wallet.ListUnspentWitness(minConfs, maxConfs)
if err != nil {
return nil, err
}
rpcUtxos, err := lnrpc.MarshalUtxos(utxos, w.cfg.ChainParams)
if err != nil {
return nil, err
}
return &ListUnspentResponse{
Utxos: rpcUtxos,
}, nil
}
// LeaseOutput locks an output to the given ID, preventing it from being // LeaseOutput locks an output to the given ID, preventing it from being
// available for any future coin selection attempts. The absolute time of the // available for any future coin selection attempts. The absolute time of the
// lock's expiration is returned. The expiration of the lock can be extended by // lock's expiration is returned. The expiration of the lock can be extended by

@ -162,6 +162,9 @@ func (s *subRPCServerConfigs) PopulateDependencies(cfg *Config, cc *chainControl
subCfgValue.FieldByName("Chain").Set( subCfgValue.FieldByName("Chain").Set(
reflect.ValueOf(cc.chainIO), reflect.ValueOf(cc.chainIO),
) )
subCfgValue.FieldByName("ChainParams").Set(
reflect.ValueOf(activeNetParams),
)
case *autopilotrpc.Config: case *autopilotrpc.Config:
subCfgValue := extractReflectValue(subCfg) subCfgValue := extractReflectValue(subCfg)