Skip to content

Commit ddc6611

Browse files
mpowaganduchak
authored andcommitted
feat(state channels): allow to pass metadata to transfer update (#755)
1 parent 232e0ab commit ddc6611

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

es/channel/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ function id () {
112112
* @param {String} to - Receiver's public address
113113
* @param {Number} amount - Transaction amount
114114
* @param {Function} sign - Function which verifies and signs offchain transaction
115+
* @param {Array<String>} metadata
115116
* @return {Promise<Object>}
116117
* @example channel.update(
117118
* 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',
@@ -124,7 +125,7 @@ function id () {
124125
* }
125126
* )
126127
*/
127-
function update (from, to, amount, sign) {
128+
function update (from, to, amount, sign, metadata) {
128129
return new Promise((resolve, reject) => {
129130
enqueueAction(
130131
this,
@@ -133,7 +134,7 @@ function update (from, to, amount, sign) {
133134
send(channel, {
134135
jsonrpc: '2.0',
135136
method: 'channels.update.new',
136-
params: { from, to, amount }
137+
params: { from, to, amount, meta: metadata }
137138
})
138139
return {
139140
handler: handlers.awaitingOffChainTx,

test/integration/channel.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,27 @@ describe('Channel', function () {
295295
})
296296
})
297297

298+
it('can post update with metadata', async () => {
299+
responderShouldRejectUpdate = true
300+
const meta = 'meta 1'
301+
const sign = sinon.spy(initiator.signTransaction.bind(initiator))
302+
await initiatorCh.update(
303+
await initiator.address(),
304+
await responder.address(),
305+
100,
306+
sign,
307+
[meta]
308+
)
309+
sign.firstCall.args[1].updates.should.eql([
310+
sign.firstCall.args[1].updates[0],
311+
{ data: meta, op: 'OffChainMeta'}
312+
])
313+
responderSign.firstCall.args[2].updates.should.eql([
314+
responderSign.firstCall.args[2].updates[0],
315+
{ data: meta, op: 'OffChainMeta'}
316+
])
317+
})
318+
298319
it('can get proof of inclusion', async () => {
299320
const initiatorAddr = await initiator.address()
300321
const responderAddr = await responder.address()

0 commit comments

Comments
 (0)