OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / btcsuite / btcd / btcjson / chainsvrwscmds.go
1 // Copyright (c) 2014-2017 The btcsuite developers
2 // Copyright (c) 2015-2017 The Decred developers
3 // Use of this source code is governed by an ISC
4 // license that can be found in the LICENSE file.
5
6 // NOTE: This file is intended to house the RPC commands that are supported by
7 // a chain server, but are only available via websockets.
8
9 package btcjson
10
11 // AuthenticateCmd defines the authenticate JSON-RPC command.
12 type AuthenticateCmd struct {
13         Username   string
14         Passphrase string
15 }
16
17 // NewAuthenticateCmd returns a new instance which can be used to issue an
18 // authenticate JSON-RPC command.
19 func NewAuthenticateCmd(username, passphrase string) *AuthenticateCmd {
20         return &AuthenticateCmd{
21                 Username:   username,
22                 Passphrase: passphrase,
23         }
24 }
25
26 // NotifyBlocksCmd defines the notifyblocks JSON-RPC command.
27 type NotifyBlocksCmd struct{}
28
29 // NewNotifyBlocksCmd returns a new instance which can be used to issue a
30 // notifyblocks JSON-RPC command.
31 func NewNotifyBlocksCmd() *NotifyBlocksCmd {
32         return &NotifyBlocksCmd{}
33 }
34
35 // StopNotifyBlocksCmd defines the stopnotifyblocks JSON-RPC command.
36 type StopNotifyBlocksCmd struct{}
37
38 // NewStopNotifyBlocksCmd returns a new instance which can be used to issue a
39 // stopnotifyblocks JSON-RPC command.
40 func NewStopNotifyBlocksCmd() *StopNotifyBlocksCmd {
41         return &StopNotifyBlocksCmd{}
42 }
43
44 // NotifyNewTransactionsCmd defines the notifynewtransactions JSON-RPC command.
45 type NotifyNewTransactionsCmd struct {
46         Verbose *bool `jsonrpcdefault:"false"`
47 }
48
49 // NewNotifyNewTransactionsCmd returns a new instance which can be used to issue
50 // a notifynewtransactions JSON-RPC command.
51 //
52 // The parameters which are pointers indicate they are optional.  Passing nil
53 // for optional parameters will use the default value.
54 func NewNotifyNewTransactionsCmd(verbose *bool) *NotifyNewTransactionsCmd {
55         return &NotifyNewTransactionsCmd{
56                 Verbose: verbose,
57         }
58 }
59
60 // SessionCmd defines the session JSON-RPC command.
61 type SessionCmd struct{}
62
63 // NewSessionCmd returns a new instance which can be used to issue a session
64 // JSON-RPC command.
65 func NewSessionCmd() *SessionCmd {
66         return &SessionCmd{}
67 }
68
69 // StopNotifyNewTransactionsCmd defines the stopnotifynewtransactions JSON-RPC command.
70 type StopNotifyNewTransactionsCmd struct{}
71
72 // NewStopNotifyNewTransactionsCmd returns a new instance which can be used to issue
73 // a stopnotifynewtransactions JSON-RPC command.
74 //
75 // The parameters which are pointers indicate they are optional.  Passing nil
76 // for optional parameters will use the default value.
77 func NewStopNotifyNewTransactionsCmd() *StopNotifyNewTransactionsCmd {
78         return &StopNotifyNewTransactionsCmd{}
79 }
80
81 // NotifyReceivedCmd defines the notifyreceived JSON-RPC command.
82 //
83 // NOTE: Deprecated. Use LoadTxFilterCmd instead.
84 type NotifyReceivedCmd struct {
85         Addresses []string
86 }
87
88 // NewNotifyReceivedCmd returns a new instance which can be used to issue a
89 // notifyreceived JSON-RPC command.
90 //
91 // NOTE: Deprecated. Use NewLoadTxFilterCmd instead.
92 func NewNotifyReceivedCmd(addresses []string) *NotifyReceivedCmd {
93         return &NotifyReceivedCmd{
94                 Addresses: addresses,
95         }
96 }
97
98 // OutPoint describes a transaction outpoint that will be marshalled to and
99 // from JSON.
100 type OutPoint struct {
101         Hash  string `json:"hash"`
102         Index uint32 `json:"index"`
103 }
104
105 // LoadTxFilterCmd defines the loadtxfilter request parameters to load or
106 // reload a transaction filter.
107 //
108 // NOTE: This is a btcd extension ported from github.com/decred/dcrd/dcrjson
109 // and requires a websocket connection.
110 type LoadTxFilterCmd struct {
111         Reload    bool
112         Addresses []string
113         OutPoints []OutPoint
114 }
115
116 // NewLoadTxFilterCmd returns a new instance which can be used to issue a
117 // loadtxfilter JSON-RPC command.
118 //
119 // NOTE: This is a btcd extension ported from github.com/decred/dcrd/dcrjson
120 // and requires a websocket connection.
121 func NewLoadTxFilterCmd(reload bool, addresses []string, outPoints []OutPoint) *LoadTxFilterCmd {
122         return &LoadTxFilterCmd{
123                 Reload:    reload,
124                 Addresses: addresses,
125                 OutPoints: outPoints,
126         }
127 }
128
129 // NotifySpentCmd defines the notifyspent JSON-RPC command.
130 //
131 // NOTE: Deprecated. Use LoadTxFilterCmd instead.
132 type NotifySpentCmd struct {
133         OutPoints []OutPoint
134 }
135
136 // NewNotifySpentCmd returns a new instance which can be used to issue a
137 // notifyspent JSON-RPC command.
138 //
139 // NOTE: Deprecated. Use NewLoadTxFilterCmd instead.
140 func NewNotifySpentCmd(outPoints []OutPoint) *NotifySpentCmd {
141         return &NotifySpentCmd{
142                 OutPoints: outPoints,
143         }
144 }
145
146 // StopNotifyReceivedCmd defines the stopnotifyreceived JSON-RPC command.
147 //
148 // NOTE: Deprecated. Use LoadTxFilterCmd instead.
149 type StopNotifyReceivedCmd struct {
150         Addresses []string
151 }
152
153 // NewStopNotifyReceivedCmd returns a new instance which can be used to issue a
154 // stopnotifyreceived JSON-RPC command.
155 //
156 // NOTE: Deprecated. Use NewLoadTxFilterCmd instead.
157 func NewStopNotifyReceivedCmd(addresses []string) *StopNotifyReceivedCmd {
158         return &StopNotifyReceivedCmd{
159                 Addresses: addresses,
160         }
161 }
162
163 // StopNotifySpentCmd defines the stopnotifyspent JSON-RPC command.
164 //
165 // NOTE: Deprecated. Use LoadTxFilterCmd instead.
166 type StopNotifySpentCmd struct {
167         OutPoints []OutPoint
168 }
169
170 // NewStopNotifySpentCmd returns a new instance which can be used to issue a
171 // stopnotifyspent JSON-RPC command.
172 //
173 // NOTE: Deprecated. Use NewLoadTxFilterCmd instead.
174 func NewStopNotifySpentCmd(outPoints []OutPoint) *StopNotifySpentCmd {
175         return &StopNotifySpentCmd{
176                 OutPoints: outPoints,
177         }
178 }
179
180 // RescanCmd defines the rescan JSON-RPC command.
181 //
182 // NOTE: Deprecated. Use RescanBlocksCmd instead.
183 type RescanCmd struct {
184         BeginBlock string
185         Addresses  []string
186         OutPoints  []OutPoint
187         EndBlock   *string
188 }
189
190 // NewRescanCmd returns a new instance which can be used to issue a rescan
191 // JSON-RPC command.
192 //
193 // The parameters which are pointers indicate they are optional.  Passing nil
194 // for optional parameters will use the default value.
195 //
196 // NOTE: Deprecated. Use NewRescanBlocksCmd instead.
197 func NewRescanCmd(beginBlock string, addresses []string, outPoints []OutPoint, endBlock *string) *RescanCmd {
198         return &RescanCmd{
199                 BeginBlock: beginBlock,
200                 Addresses:  addresses,
201                 OutPoints:  outPoints,
202                 EndBlock:   endBlock,
203         }
204 }
205
206 // RescanBlocksCmd defines the rescan JSON-RPC command.
207 //
208 // NOTE: This is a btcd extension ported from github.com/decred/dcrd/dcrjson
209 // and requires a websocket connection.
210 type RescanBlocksCmd struct {
211         // Block hashes as a string array.
212         BlockHashes []string
213 }
214
215 // NewRescanBlocksCmd returns a new instance which can be used to issue a rescan
216 // JSON-RPC command.
217 //
218 // NOTE: This is a btcd extension ported from github.com/decred/dcrd/dcrjson
219 // and requires a websocket connection.
220 func NewRescanBlocksCmd(blockHashes []string) *RescanBlocksCmd {
221         return &RescanBlocksCmd{BlockHashes: blockHashes}
222 }
223
224 func init() {
225         // The commands in this file are only usable by websockets.
226         flags := UFWebsocketOnly
227
228         MustRegisterCmd("authenticate", (*AuthenticateCmd)(nil), flags)
229         MustRegisterCmd("loadtxfilter", (*LoadTxFilterCmd)(nil), flags)
230         MustRegisterCmd("notifyblocks", (*NotifyBlocksCmd)(nil), flags)
231         MustRegisterCmd("notifynewtransactions", (*NotifyNewTransactionsCmd)(nil), flags)
232         MustRegisterCmd("notifyreceived", (*NotifyReceivedCmd)(nil), flags)
233         MustRegisterCmd("notifyspent", (*NotifySpentCmd)(nil), flags)
234         MustRegisterCmd("session", (*SessionCmd)(nil), flags)
235         MustRegisterCmd("stopnotifyblocks", (*StopNotifyBlocksCmd)(nil), flags)
236         MustRegisterCmd("stopnotifynewtransactions", (*StopNotifyNewTransactionsCmd)(nil), flags)
237         MustRegisterCmd("stopnotifyspent", (*StopNotifySpentCmd)(nil), flags)
238         MustRegisterCmd("stopnotifyreceived", (*StopNotifyReceivedCmd)(nil), flags)
239         MustRegisterCmd("rescan", (*RescanCmd)(nil), flags)
240         MustRegisterCmd("rescanblocks", (*RescanBlocksCmd)(nil), flags)
241 }