add gitignore, cli shell
This commit is contained in:
parent
a93b6dcee4
commit
31f3df2183
35
.gitignore
vendored
Normal file
35
.gitignore
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# ---> Go
|
||||||
|
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||||
|
*.o
|
||||||
|
*.a
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Folders
|
||||||
|
_obj
|
||||||
|
_test
|
||||||
|
|
||||||
|
# Architecture specific extensions/prefixes
|
||||||
|
*.[568vq]
|
||||||
|
[568vq].out
|
||||||
|
|
||||||
|
*.cgo1.go
|
||||||
|
*.cgo2.c
|
||||||
|
_cgo_defun.c
|
||||||
|
_cgo_gotypes.go
|
||||||
|
_cgo_export.*
|
||||||
|
|
||||||
|
_testmain.go
|
||||||
|
|
||||||
|
*.exe
|
||||||
|
*.test
|
||||||
|
*.prof
|
||||||
|
|
||||||
|
plasma
|
||||||
|
|
||||||
|
cmd/cmd
|
||||||
|
**.key
|
||||||
|
**.hex
|
||||||
|
|
||||||
|
cmd/lncli/lncli
|
||||||
|
|
||||||
|
test_wal/*
|
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
"github.com/codegangsta/cli"
|
"github.com/codegangsta/cli"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
"li.lan/labs/plasma/rpcprotos"
|
"li.lan/labs/plasma/lnrpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
func printRespJson(resp interface{}) {
|
func printRespJson(resp interface{}) {
|
||||||
@ -21,6 +21,12 @@ func printRespJson(resp interface{}) {
|
|||||||
out.WriteTo(os.Stdout)
|
out.WriteTo(os.Stdout)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ShellCommand = cli.Command{
|
||||||
|
Name: "shell",
|
||||||
|
Usage: "enter interactive shell",
|
||||||
|
Action: shell,
|
||||||
|
}
|
||||||
|
|
||||||
var NewAddressCommand = cli.Command{
|
var NewAddressCommand = cli.Command{
|
||||||
Name: "newaddress",
|
Name: "newaddress",
|
||||||
Usage: "gets the next address in the HD chain",
|
Usage: "gets the next address in the HD chain",
|
||||||
|
@ -6,7 +6,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/codegangsta/cli"
|
"github.com/codegangsta/cli"
|
||||||
"li.lan/labs/plasma/rpcprotos"
|
"li.lan/labs/plasma/lnrpc"
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
@ -52,6 +52,7 @@ func main() {
|
|||||||
app.Commands = []cli.Command{
|
app.Commands = []cli.Command{
|
||||||
NewAddressCommand,
|
NewAddressCommand,
|
||||||
SendManyCommand,
|
SendManyCommand,
|
||||||
|
ShellCommand,
|
||||||
}
|
}
|
||||||
if err := app.Run(os.Args); err != nil {
|
if err := app.Run(os.Args); err != nil {
|
||||||
fatal(err)
|
fatal(err)
|
||||||
|
147
cmd/lncli/shell.go
Normal file
147
cmd/lncli/shell.go
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/codegangsta/cli"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
func shell(z *cli.Context) {
|
||||||
|
fmt.Printf("LN shell v0.0FTW\n")
|
||||||
|
for {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 4000)
|
||||||
|
fmt.Printf("->")
|
||||||
|
msg, err := reader.ReadString('\n')
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
cmdslice := strings.Fields(msg)
|
||||||
|
if len(cmdslice) < 1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
fmt.Printf("entered command: %s\n", msg)
|
||||||
|
err = Shellparse(cmdslice)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Shellparse(cmdslice []string) error {
|
||||||
|
var err error
|
||||||
|
var args []string
|
||||||
|
cmd := cmdslice[0]
|
||||||
|
if len(cmdslice) > 1 {
|
||||||
|
args = cmdslice[1:]
|
||||||
|
}
|
||||||
|
if cmd == "exit" || cmd == "quit" {
|
||||||
|
return fmt.Errorf("User exit")
|
||||||
|
}
|
||||||
|
// if cmd == "help" {
|
||||||
|
// Help()
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if cmd == "pbx" {
|
||||||
|
// err = PbxConnect(args)
|
||||||
|
// if err != nil {
|
||||||
|
// fmt.Printf("pbx error: %s\n", err)
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
// if cmd == "lnwho" {
|
||||||
|
// err = LnWho(args)
|
||||||
|
// if err != nil {
|
||||||
|
// fmt.Printf("LN WhoAreYou error: %s\n", err)
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
// if cmd == "lnd" {
|
||||||
|
// err = LnDisconnect(args)
|
||||||
|
// if err != nil {
|
||||||
|
// fmt.Printf("LN disconnect error: %s\n", err)
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
if cmd == "lnhi" {
|
||||||
|
err = LnChat(args)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("LN chat error: %s\n", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if cmd == "lnc" {
|
||||||
|
err = LnConnect(args)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("LN connect error: %s\n", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
// if cmd == "lnl" {
|
||||||
|
// err = LnListen(args)
|
||||||
|
// if err != nil {
|
||||||
|
// fmt.Printf("LN listen error: %s\n", err)
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
// if cmd == "txsend" {
|
||||||
|
// err = TxSend(args)
|
||||||
|
// if err != nil {
|
||||||
|
// fmt.Printf("txsend error: %s\n", err)
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
if cmd == "rpc" {
|
||||||
|
err = RpcConnect(args)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("RPC connect error: %s\n", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Command not recognized.\n")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func RpcConnect(args []string) error {
|
||||||
|
// client := getClient(ctx)
|
||||||
|
opts := []grpc.DialOption{grpc.WithInsecure()}
|
||||||
|
conn, err := grpc.Dial("127.0.0.1:10000", opts...)
|
||||||
|
if err != nil {
|
||||||
|
return (err)
|
||||||
|
}
|
||||||
|
state, err := conn.State()
|
||||||
|
if err != nil {
|
||||||
|
return (err)
|
||||||
|
}
|
||||||
|
fmt.Printf("connection state: %s\n", state.String())
|
||||||
|
err = conn.Close()
|
||||||
|
if err != nil {
|
||||||
|
return (err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func LnConnect(args []string) error {
|
||||||
|
fmt.Printf("lnconnect, %d args\n", len(args))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// For testing. Syntax: lnhi hello world
|
||||||
|
func LnChat(args []string) error {
|
||||||
|
|
||||||
|
var chat string
|
||||||
|
for _, s := range args {
|
||||||
|
chat += s + " "
|
||||||
|
}
|
||||||
|
// msg := append([]byte{lnwire.MSGID_TEXTCHAT}, []byte(chat)...)
|
||||||
|
|
||||||
|
fmt.Printf("will send text message: %s\n", chat)
|
||||||
|
return nil
|
||||||
|
}
|
3
lnrpc/gen_protos.sh
Executable file
3
lnrpc/gen_protos.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
protoc -I . rpc.proto --go_out=plugins=grpc:.
|
188
lnrpc/rpc.pb.go
Normal file
188
lnrpc/rpc.pb.go
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: rpc.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package lnrpc is a generated protocol buffer package.
|
||||||
|
|
||||||
|
It is generated from these files:
|
||||||
|
rpc.proto
|
||||||
|
|
||||||
|
It has these top-level messages:
|
||||||
|
SendManyRequest
|
||||||
|
SendManyResponse
|
||||||
|
NewAddressRequest
|
||||||
|
NewAddressResponse
|
||||||
|
*/
|
||||||
|
package lnrpc
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "golang.org/x/net/context"
|
||||||
|
grpc "google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
type SendManyRequest struct {
|
||||||
|
AddrToAmount map[string]int64 `protobuf:"bytes,1,rep,name=AddrToAmount" json:"AddrToAmount,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SendManyRequest) Reset() { *m = SendManyRequest{} }
|
||||||
|
func (m *SendManyRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SendManyRequest) ProtoMessage() {}
|
||||||
|
func (*SendManyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||||
|
|
||||||
|
func (m *SendManyRequest) GetAddrToAmount() map[string]int64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.AddrToAmount
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type SendManyResponse struct {
|
||||||
|
Txid string `protobuf:"bytes,1,opt,name=txid" json:"txid,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SendManyResponse) Reset() { *m = SendManyResponse{} }
|
||||||
|
func (m *SendManyResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SendManyResponse) ProtoMessage() {}
|
||||||
|
func (*SendManyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
|
||||||
|
|
||||||
|
type NewAddressRequest struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NewAddressRequest) Reset() { *m = NewAddressRequest{} }
|
||||||
|
func (m *NewAddressRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*NewAddressRequest) ProtoMessage() {}
|
||||||
|
func (*NewAddressRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
|
||||||
|
|
||||||
|
type NewAddressResponse struct {
|
||||||
|
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NewAddressResponse) Reset() { *m = NewAddressResponse{} }
|
||||||
|
func (m *NewAddressResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*NewAddressResponse) ProtoMessage() {}
|
||||||
|
func (*NewAddressResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterType((*SendManyRequest)(nil), "lnrpc.SendManyRequest")
|
||||||
|
proto.RegisterType((*SendManyResponse)(nil), "lnrpc.SendManyResponse")
|
||||||
|
proto.RegisterType((*NewAddressRequest)(nil), "lnrpc.NewAddressRequest")
|
||||||
|
proto.RegisterType((*NewAddressResponse)(nil), "lnrpc.NewAddressResponse")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ context.Context
|
||||||
|
var _ grpc.ClientConn
|
||||||
|
|
||||||
|
// Client API for Lightning service
|
||||||
|
|
||||||
|
type LightningClient interface {
|
||||||
|
SendMany(ctx context.Context, in *SendManyRequest, opts ...grpc.CallOption) (*SendManyResponse, error)
|
||||||
|
NewAddress(ctx context.Context, in *NewAddressRequest, opts ...grpc.CallOption) (*NewAddressResponse, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type lightningClient struct {
|
||||||
|
cc *grpc.ClientConn
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewLightningClient(cc *grpc.ClientConn) LightningClient {
|
||||||
|
return &lightningClient{cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *lightningClient) SendMany(ctx context.Context, in *SendManyRequest, opts ...grpc.CallOption) (*SendManyResponse, error) {
|
||||||
|
out := new(SendManyResponse)
|
||||||
|
err := grpc.Invoke(ctx, "/lnrpc.Lightning/SendMany", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *lightningClient) NewAddress(ctx context.Context, in *NewAddressRequest, opts ...grpc.CallOption) (*NewAddressResponse, error) {
|
||||||
|
out := new(NewAddressResponse)
|
||||||
|
err := grpc.Invoke(ctx, "/lnrpc.Lightning/NewAddress", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Server API for Lightning service
|
||||||
|
|
||||||
|
type LightningServer interface {
|
||||||
|
SendMany(context.Context, *SendManyRequest) (*SendManyResponse, error)
|
||||||
|
NewAddress(context.Context, *NewAddressRequest) (*NewAddressResponse, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterLightningServer(s *grpc.Server, srv LightningServer) {
|
||||||
|
s.RegisterService(&_Lightning_serviceDesc, srv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _Lightning_SendMany_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) {
|
||||||
|
in := new(SendManyRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
out, err := srv.(LightningServer).SendMany(ctx, in)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func _Lightning_NewAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) {
|
||||||
|
in := new(NewAddressRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
out, err := srv.(LightningServer).NewAddress(ctx, in)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var _Lightning_serviceDesc = grpc.ServiceDesc{
|
||||||
|
ServiceName: "lnrpc.Lightning",
|
||||||
|
HandlerType: (*LightningServer)(nil),
|
||||||
|
Methods: []grpc.MethodDesc{
|
||||||
|
{
|
||||||
|
MethodName: "SendMany",
|
||||||
|
Handler: _Lightning_SendMany_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "NewAddress",
|
||||||
|
Handler: _Lightning_NewAddress_Handler,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Streams: []grpc.StreamDesc{},
|
||||||
|
}
|
||||||
|
|
||||||
|
var fileDescriptor0 = []byte{
|
||||||
|
// 241 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x2c, 0x2a, 0x48, 0xd6,
|
||||||
|
0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0xcd, 0xc9, 0x03, 0x72, 0x94, 0xda, 0x18, 0xb9, 0xf8,
|
||||||
|
0x83, 0x53, 0xf3, 0x52, 0x7c, 0x13, 0xf3, 0x2a, 0x83, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84,
|
||||||
|
0xec, 0xb8, 0x78, 0x1c, 0x53, 0x52, 0x8a, 0x42, 0xf2, 0x1d, 0x73, 0xf3, 0x4b, 0xf3, 0x4a, 0x24,
|
||||||
|
0x18, 0x15, 0x98, 0x35, 0xb8, 0x8d, 0x34, 0xf4, 0xc0, 0x3a, 0xf4, 0xd0, 0x54, 0xeb, 0x21, 0x2b,
|
||||||
|
0x75, 0xcd, 0x2b, 0x29, 0xaa, 0x94, 0x32, 0xe6, 0x12, 0xc4, 0x10, 0x14, 0xe2, 0xe6, 0x62, 0xce,
|
||||||
|
0x4e, 0xad, 0x04, 0x9a, 0xc5, 0xa8, 0xc1, 0x29, 0xc4, 0xcb, 0xc5, 0x5a, 0x96, 0x98, 0x53, 0x9a,
|
||||||
|
0x2a, 0xc1, 0x04, 0xe4, 0x32, 0x5b, 0x31, 0x59, 0x30, 0x2a, 0x29, 0x70, 0x09, 0x20, 0x4c, 0x2e,
|
||||||
|
0x2e, 0xc8, 0xcf, 0x2b, 0x4e, 0x15, 0xe2, 0xe1, 0x62, 0x29, 0xa9, 0xc8, 0x4c, 0x81, 0x68, 0x52,
|
||||||
|
0x12, 0xe6, 0x12, 0xf4, 0x4b, 0x2d, 0x07, 0x99, 0x9c, 0x5a, 0x5c, 0x0c, 0xb5, 0x5d, 0x49, 0x95,
|
||||||
|
0x4b, 0x08, 0x59, 0x10, 0xaa, 0x91, 0x9f, 0x8b, 0x3d, 0x11, 0x22, 0x04, 0xd1, 0x6b, 0xd4, 0xcd,
|
||||||
|
0xc8, 0xc5, 0xe9, 0x93, 0x99, 0x9e, 0x51, 0x92, 0x97, 0x99, 0x97, 0x2e, 0x64, 0xcd, 0xc5, 0x01,
|
||||||
|
0xb3, 0x4b, 0x48, 0x0c, 0xbb, 0xb7, 0xa4, 0xc4, 0x31, 0xc4, 0xa1, 0x66, 0x3b, 0x72, 0x71, 0x21,
|
||||||
|
0x6c, 0x14, 0x92, 0x80, 0x2a, 0xc3, 0x70, 0x99, 0x94, 0x24, 0x16, 0x19, 0x88, 0x11, 0x49, 0x6c,
|
||||||
|
0xe0, 0x28, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x80, 0x74, 0x7a, 0x62, 0x8f, 0x01, 0x00,
|
||||||
|
0x00,
|
||||||
|
}
|
21
lnrpc/rpc.proto
Normal file
21
lnrpc/rpc.proto
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package lnrpc;
|
||||||
|
|
||||||
|
service Lightning {
|
||||||
|
rpc SendMany(SendManyRequest) returns (SendManyResponse);
|
||||||
|
rpc NewAddress(NewAddressRequest) returns (NewAddressResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
message SendManyRequest {
|
||||||
|
map<string, int64> AddrToAmount = 1;
|
||||||
|
}
|
||||||
|
message SendManyResponse {
|
||||||
|
string txid = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message NewAddressRequest {}
|
||||||
|
message NewAddressResponse {
|
||||||
|
string address = 1;
|
||||||
|
}
|
@ -9,8 +9,8 @@ import (
|
|||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/grpclog"
|
"google.golang.org/grpc/grpclog"
|
||||||
|
|
||||||
|
"li.lan/labs/plasma/lnrpc"
|
||||||
"li.lan/labs/plasma/lnwallet"
|
"li.lan/labs/plasma/lnwallet"
|
||||||
"li.lan/labs/plasma/rpcprotos"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//lightning == terrestrial plasma
|
//lightning == terrestrial plasma
|
||||||
|
@ -6,8 +6,8 @@ import (
|
|||||||
"github.com/btcsuite/btcutil"
|
"github.com/btcsuite/btcutil"
|
||||||
"github.com/btcsuite/btcwallet/waddrmgr"
|
"github.com/btcsuite/btcwallet/waddrmgr"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
|
"li.lan/labs/plasma/lnrpc"
|
||||||
"li.lan/labs/plasma/lnwallet"
|
"li.lan/labs/plasma/lnwallet"
|
||||||
"li.lan/labs/plasma/rpcprotos"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
Loading…
Reference in New Issue
Block a user