@@ -26,41 +26,45 @@ import {
26
26
import * as R from 'ramda'
27
27
28
28
export function awaitingConnection ( channel , message , state ) {
29
- if ( message . action === 'info' ) {
30
- if ( [ 'channel_accept' , 'funding_created' ] . includes ( message . payload . event ) ) {
29
+ if ( message . method === 'channels. info' ) {
30
+ if ( [ 'channel_accept' , 'funding_created' ] . includes ( message . params . data . event ) ) {
31
31
changeStatus ( channel , {
32
32
channel_accept : 'accepted' ,
33
33
funding_created : 'halfSigned'
34
- } [ message . payload . event ] )
34
+ } [ message . params . data . event ] )
35
35
return { handler : awaitingChannelCreateTx }
36
36
}
37
- if ( message . payload . event === 'channel_reestablished' ) {
37
+ if ( message . params . data . event === 'channel_reestablished' ) {
38
38
return { handler : awaitingOpenConfirmation }
39
39
}
40
40
return { handler : awaitingConnection }
41
41
}
42
- if ( message . action === 'error' ) {
42
+ if ( message . method === 'channels. error' ) {
43
43
emit ( channel , 'error' , new Error ( message . payload . message ) )
44
44
return { handler : channelClosed }
45
45
}
46
46
}
47
47
48
48
export async function awaitingChannelCreateTx ( channel , message , state ) {
49
- if ( message . action === 'sign' ) {
50
- const signedTx = await options . get ( channel ) . sign ( message . tag , message . payload . tx )
51
- send ( channel , { action : message . tag , payload : { tx : signedTx } } )
49
+ const tag = {
50
+ initiator : 'initiator_sign' ,
51
+ responder : 'responder_sign'
52
+ } [ options . get ( channel ) . role ]
53
+ if ( message . method === `channels.sign.${ tag } ` ) {
54
+ const signedTx = await options . get ( channel ) . sign ( message . tag , message . params . data . tx )
55
+ send ( channel , { jsonrpc : '2.0' , method : `channels.${ tag } ` , params : { tx : signedTx } } )
52
56
return { handler : awaitingOnChainTx }
53
57
}
54
58
}
55
59
56
60
export function awaitingOnChainTx ( channel , message , state ) {
57
- if ( message . action === 'on_chain_tx' ) {
58
- emit ( channel , 'onChainTx' , message . payload . tx )
61
+ if ( message . method === 'channels. on_chain_tx' ) {
62
+ emit ( channel , 'onChainTx' , message . params . data . tx )
59
63
return { handler : awaitingBlockInclusion }
60
64
}
61
65
if (
62
- message . action === 'info' &&
63
- message . payload . event === 'funding_signed' &&
66
+ message . method === 'channels. info' &&
67
+ message . params . data . event === 'funding_signed' &&
64
68
options . get ( channel ) . role === 'initiator'
65
69
) {
66
70
changeStatus ( channel , 'signed' )
@@ -69,59 +73,59 @@ export function awaitingOnChainTx (channel, message, state) {
69
73
}
70
74
71
75
export function awaitingBlockInclusion ( channel , message , state ) {
72
- if ( message . action === 'info' ) {
76
+ if ( message . method === 'channels. info' ) {
73
77
const handler = {
74
78
own_funding_locked : awaitingBlockInclusion ,
75
79
funding_locked : awaitingOpenConfirmation
76
- } [ message . payload . event ]
80
+ } [ message . params . data . event ]
77
81
if ( handler ) {
78
82
return { handler }
79
83
}
80
84
}
81
85
}
82
86
83
87
export function awaitingOpenConfirmation ( channel , message , state ) {
84
- if ( message . action === 'info' && message . payload . event === 'open' ) {
88
+ if ( message . method === 'channels. info' && message . params . data . event === 'open' ) {
85
89
return { handler : awaitingInitialState }
86
90
}
87
91
}
88
92
89
93
export function awaitingInitialState ( channel , message , state ) {
90
- if ( message . action === 'update' ) {
91
- changeState ( channel , message . payload . state )
94
+ if ( message . method === 'channels. update' ) {
95
+ changeState ( channel , message . params . data . state )
92
96
return { handler : channelOpen }
93
97
}
94
98
}
95
99
96
100
export async function channelOpen ( channel , message , state ) {
97
- if ( message . action === 'info' ) {
98
- if ( message . payload . event === 'died' ) {
101
+ if ( message . method === 'channels. info' ) {
102
+ if ( message . params . data . event === 'died' ) {
99
103
changeStatus ( channel , 'died' )
100
104
}
101
105
const handler = {
102
106
update : awaitingUpdateTxSignRequest ,
103
107
close_mutual : channelOpen ,
104
108
died : channelClosed
105
- } [ message . payload . event ]
109
+ } [ message . params . data . event ]
106
110
if ( handler ) {
107
111
return { handler }
108
112
}
109
113
}
110
- if ( message . action === 'sign' && message . tag === ' shutdown_sign_ack') {
111
- const signedTx = await Promise . resolve ( options . get ( channel ) . sign ( message . tag , message . payload . tx ) )
112
- send ( channel , { action : message . tag , payload : { tx : signedTx } } )
114
+ if ( message . method === 'channels. sign. shutdown_sign_ack' ) {
115
+ const signedTx = await Promise . resolve ( options . get ( channel ) . sign ( message . tag , message . params . data . tx ) )
116
+ send ( channel , { jsonrpc : '2.0' , method : 'channels.shutdown_sign_ack' , params : { tx : signedTx } } )
113
117
return { handler : channelOpen }
114
118
}
115
- if ( message . action === 'on_chain_tx' ) {
116
- emit ( channel , 'onChainTx' , message . payload . tx )
119
+ if ( message . method === 'channels. on_chain_tx' ) {
120
+ emit ( channel , 'onChainTx' , message . params . data . tx )
117
121
return { handler : channelOpen }
118
122
}
119
- if ( message . action === 'leave' ) {
123
+ if ( message . method === 'channels. leave' ) {
120
124
// TODO: emit event
121
125
return { handler : channelOpen }
122
126
}
123
- if ( message . action === 'message' ) {
124
- emit ( channel , 'message' , message . payload . message )
127
+ if ( message . method === 'channels. message' ) {
128
+ emit ( channel , 'message' , message . params . data . message )
125
129
return { handler : channelOpen }
126
130
}
127
131
}
@@ -130,44 +134,44 @@ channelOpen.enter = (channel) => {
130
134
}
131
135
132
136
export async function awaitingOffChainTx ( channel , message , state ) {
133
- if ( message . action === 'sign' && message . tag === ' update') {
137
+ if ( message . method === 'channels. sign. update' ) {
134
138
const { sign } = state
135
- const signedTx = await sign ( message . payload . tx )
136
- send ( channel , { action : message . tag , payload : { tx : signedTx } } )
139
+ const signedTx = await sign ( message . params . data . tx )
140
+ send ( channel , { jsonrpc : '2.0' , method : 'channels.update' , params : { tx : signedTx } } )
137
141
return { handler : awaitingOffChainUpdate , state }
138
142
}
139
- if ( message . action === 'error' ) {
140
- state . reject ( new Error ( JSON . stringify ( message . payload ) ) )
143
+ if ( message . method === 'channels. error' ) {
144
+ state . reject ( new Error ( message . data . message ) )
141
145
return { handler : channelOpen }
142
146
}
143
147
}
144
148
145
149
export function awaitingOffChainUpdate ( channel , message , state ) {
146
- if ( message . action === 'update' ) {
147
- changeState ( channel , message . payload . state )
148
- state . resolve ( { accepted : true , state : message . payload . state } )
150
+ if ( message . method === 'channels. update' ) {
151
+ changeState ( channel , message . params . data . state )
152
+ state . resolve ( { accepted : true , state : message . params . data . state } )
149
153
return { handler : channelOpen }
150
154
}
151
- if ( message . action === 'conflict' ) {
155
+ if ( message . method === 'channels. conflict' ) {
152
156
state . resolve ( { accepted : false } )
153
157
return { handler : channelOpen }
154
158
}
155
159
}
156
160
157
161
export async function awaitingUpdateTxSignRequest ( channel , message , state ) {
158
- if ( message . action === 'sign' && message . tag === ' update_ack') {
159
- const signedTx = await options . get ( channel ) . sign ( message . tag , message . payload . tx )
162
+ if ( message . method === 'channels. sign. update_ack' ) {
163
+ const signedTx = await options . get ( channel ) . sign ( message . tag , message . params . data . tx )
160
164
if ( signedTx ) {
161
- send ( channel , { action : message . tag , payload : { tx : signedTx } } )
165
+ send ( channel , { jsonrpc : '2.0' , method : 'channels.update_ack' , params : { tx : signedTx } } )
162
166
return { handler : awaitingUpdateTx }
163
167
}
164
168
// soft-reject via competing update
165
169
send ( channel , {
166
- action : 'update ' ,
167
- tag : 'new' ,
168
- payload : {
169
- from : generateKeyPair ( ) . pub ,
170
- to : generateKeyPair ( ) . pub ,
170
+ jsonrpc : '2.0 ' ,
171
+ method : 'channels.update. new' ,
172
+ params : {
173
+ from : generateKeyPair ( ) . publicKey ,
174
+ to : generateKeyPair ( ) . publicKey ,
171
175
amount : 1
172
176
}
173
177
} )
@@ -176,63 +180,70 @@ export async function awaitingUpdateTxSignRequest (channel, message, state) {
176
180
}
177
181
178
182
export function awaitingUpdateTx ( channel , message , state ) {
179
- if ( message . action === 'update' ) {
183
+ if ( message . method === 'channels.update' ) {
184
+ // TODO: change state to `message.params.data.state`
180
185
return { handler : channelOpen }
181
186
}
182
187
}
183
188
184
189
export function awaitingUpdateConflict ( channel , message , state ) {
185
- if ( message . action === ' error' && message . payload . reason === 'conflict' ) {
190
+ if ( message . error ) {
186
191
return { handler : awaitingUpdateConflict }
187
192
}
188
- if ( message . action === 'conflict' ) {
193
+ if ( message . method === 'channels. conflict' ) {
189
194
return { handler : channelOpen }
190
195
}
191
196
}
192
197
193
198
export function awaitingProofOfInclusion ( channel , message , state ) {
194
- if ( message . action === 'get' && message . tag === 'poi' ) {
195
- state . resolve ( message . payload . poi )
199
+ if ( message . id === state . messageId ) {
200
+ state . resolve ( message . result . poi )
196
201
return { handler : channelOpen }
197
202
}
198
- if ( message . action === 'error' ) {
199
- state . reject ( new Error ( message . payload . reason ) )
203
+ if ( message . method === 'channels. error' ) {
204
+ state . reject ( new Error ( message . data . message ) )
200
205
return { handler : channelOpen }
201
206
}
202
207
}
203
208
204
209
export function awaitingBalances ( channel , message , state ) {
205
- if ( message . action === 'get' && message . tag === 'balances' ) {
210
+ if ( message . id === state . messageId ) {
206
211
state . resolve ( R . reduce ( ( acc , item ) => ( {
207
212
...acc ,
208
213
[ item . account ] : item . balance
209
- } ) , { } , message . payload ) )
214
+ } ) , { } , message . result ) )
210
215
return { handler : channelOpen }
211
216
}
212
- if ( message . action === 'error' ) {
213
- state . reject ( new Error ( message . payload . reason ) )
217
+ if ( message . method === 'channels. error' ) {
218
+ state . reject ( new Error ( message . data . message ) )
214
219
return { handler : channelOpen }
215
220
}
216
221
}
217
222
218
223
export async function awaitingShutdownTx ( channel , message , state ) {
219
- if ( message . action === 'sign' && message . tag === ' shutdown_sign') {
220
- const signedTx = await Promise . resolve ( state . sign ( message . payload . tx ) )
221
- send ( channel , { action : message . tag , payload : { tx : signedTx } } )
224
+ if ( message . method === 'channels. sign. shutdown_sign' ) {
225
+ const signedTx = await Promise . resolve ( state . sign ( message . params . data . tx ) )
226
+ send ( channel , { jsonrpc : '2.0' , method : 'channels.shutdown_sign' , params : { tx : signedTx } } )
222
227
return { handler : awaitingShutdownOnChainTx , state }
223
228
}
224
229
}
225
230
226
231
export function awaitingShutdownOnChainTx ( channel , message , state ) {
227
- if ( message . action === 'on_chain_tx' ) {
228
- state . resolveShutdownPromise ( message . payload . tx )
232
+ if ( message . method === 'channels. on_chain_tx' ) {
233
+ state . resolveShutdownPromise ( message . params . data . tx )
229
234
return { handler : channelClosed }
230
235
}
231
236
}
232
237
233
238
export function awaitingLeave ( channel , message , state ) {
234
- state . resolve ( { channelId : message . channel_id , state : message . payload . state } )
235
- return { handler : channelClosed }
239
+ if ( message . method === 'channels.leave' ) {
240
+ state . resolve ( { channelId : message . params . channel_id , state : message . params . data . state } )
241
+ return { handler : channelClosed }
242
+ }
243
+ if ( message . method === 'channels.error' ) {
244
+ state . reject ( new Error ( message . data . message ) )
245
+ return { handler : channelOpen }
246
+ }
236
247
}
237
248
238
249
export function channelClosed ( channel , message , state ) {
0 commit comments