Hex Artifact Content
Not logged in

Artifact 547c397bd37a1f368ee6ff7cf80c9d9eaa510a09:


0000: 63 6f 6e 73 74 20 49 6c 70 50 61 63 6b 65 74 20  const IlpPacket 
0010: 3d 20 72 65 71 75 69 72 65 28 27 69 6c 70 2d 70  = require('ilp-p
0020: 61 63 6b 65 74 27 29 0a 63 6f 6e 73 74 20 49 6c  acket').const Il
0030: 64 63 70 20 3d 20 72 65 71 75 69 72 65 28 27 69  dcp = require('i
0040: 6c 70 2d 70 72 6f 74 6f 63 6f 6c 2d 69 6c 64 63  lp-protocol-ildc
0050: 70 27 29 0a 63 6f 6e 73 74 20 63 72 79 70 74 6f  p').const crypto
0060: 20 3d 20 72 65 71 75 69 72 65 28 27 63 72 79 70   = require('cryp
0070: 74 6f 27 29 0a 63 6f 6e 73 74 20 75 75 69 64 20  to').const uuid 
0080: 3d 20 72 65 71 75 69 72 65 28 27 75 75 69 64 2f  = require('uuid/
0090: 76 34 27 29 0a 66 75 6e 63 74 69 6f 6e 20 73 68  v4').function sh
00a0: 61 32 35 36 20 28 70 72 65 69 6d 61 67 65 29 20  a256 (preimage) 
00b0: 7b 20 72 65 74 75 72 6e 20 63 72 79 70 74 6f 2e  { return crypto.
00c0: 63 72 65 61 74 65 48 61 73 68 28 27 73 68 61 32  createHash('sha2
00d0: 35 36 27 29 2e 75 70 64 61 74 65 28 70 72 65 69  56').update(prei
00e0: 6d 61 67 65 29 2e 64 69 67 65 73 74 28 29 20 7d  mage).digest() }
00f0: 0a 63 6f 6e 73 74 20 6c 61 75 6e 63 68 20 3d 20  .const launch = 
0100: 72 65 71 75 69 72 65 28 27 2e 2f 68 65 6c 70 65  require('./helpe
0110: 72 73 2f 6c 61 75 6e 63 68 27 29 0a 0a 63 6f 6e  rs/launch')..con
0120: 73 74 20 66 75 6c 66 69 6c 6c 6d 65 6e 74 20 3d  st fulfillment =
0130: 20 63 72 79 70 74 6f 2e 72 61 6e 64 6f 6d 42 79   crypto.randomBy
0140: 74 65 73 28 33 32 29 0a 63 6f 6e 73 74 20 63 6f  tes(32).const co
0150: 6e 64 69 74 69 6f 6e 20 3d 20 73 68 61 32 35 36  ndition = sha256
0160: 28 66 75 6c 66 69 6c 6c 6d 65 6e 74 29 0a 63 6f  (fulfillment).co
0170: 6e 73 6f 6c 65 2e 6c 6f 67 28 7b 20 66 75 6c 66  nsole.log({ fulf
0180: 69 6c 6c 6d 65 6e 74 2c 20 63 6f 6e 64 69 74 69  illment, conditi
0190: 6f 6e 20 7d 29 0a 0a 63 6f 6e 73 74 20 70 72 65  on })..const pre
01a0: 70 61 72 65 20 3d 20 49 6c 70 50 61 63 6b 65 74  pare = IlpPacket
01b0: 2e 73 65 72 69 61 6c 69 7a 65 49 6c 70 46 6f 72  .serializeIlpFor
01c0: 77 61 72 64 65 64 50 61 79 6d 65 6e 74 28 7b 0a  wardedPayment({.
01d0: 20 20 61 63 63 6f 75 6e 74 3a 20 27 74 65 73 74    account: 'test
01e0: 2e 71 75 69 63 6b 73 74 61 72 74 2e 62 6f 62 27  .quickstart.bob'
01f0: 2c 20 2f 2f 20 64 69 64 6e 27 74 20 6d 61 6e 61  , // didn't mana
0200: 67 65 20 79 65 74 20 74 6f 20 6f 62 74 61 69 6e  ge yet to obtain
0210: 20 74 68 69 73 20 77 69 74 68 20 49 4c 2d 44 43   this with IL-DC
0220: 50 20 74 68 72 6f 75 67 68 20 61 6e 20 4c 50 49  P through an LPI
0230: 20 76 31 20 6d 69 72 72 6f 72 20 70 6c 75 67 69   v1 mirror plugi
0240: 6e 0a 20 20 64 61 74 61 3a 20 42 75 66 66 65 72  n.  data: Buffer
0250: 2e 66 72 6f 6d 28 5b 27 68 65 6c 6c 6f 20 77 6f  .from(['hello wo
0260: 72 6c 64 27 5d 29 2c 0a 7d 29 0a 63 6f 6e 73 74  rld']),.}).const
0270: 20 66 75 6c 66 69 6c 6c 44 61 74 61 20 3d 20 49   fulfillData = I
0280: 6c 70 50 61 63 6b 65 74 2e 73 65 72 69 61 6c 69  lpPacket.seriali
0290: 7a 65 49 6c 70 46 75 6c 66 69 6c 6c 6d 65 6e 74  zeIlpFulfillment
02a0: 28 7b 0a 20 20 64 61 74 61 3a 20 42 75 66 66 65  ({.  data: Buffe
02b0: 72 2e 66 72 6f 6d 28 27 74 68 61 6e 6b 20 79 6f  r.from('thank yo
02c0: 75 27 29 0a 7d 29 0a 0a 2f 2f 20 2e 2e 2e 0a 6c  u').})..// ....l
02d0: 61 75 6e 63 68 28 27 69 6c 70 2d 70 6c 75 67 69  aunch('ilp-plugi
02e0: 6e 2d 6d 69 72 72 6f 72 2d 76 31 27 29 2e 74 68  n-mirror-v1').th
02f0: 65 6e 28 63 6f 6e 6e 65 63 74 6f 72 20 3d 3e 20  en(connector => 
0300: 7b 0a 20 20 63 6f 6e 6e 65 63 74 6f 72 2e 67 65  {.  connector.ge
0310: 74 50 6c 75 67 69 6e 28 27 61 6c 69 63 65 27 29  tPlugin('alice')
0320: 2e 6f 6c 64 50 6c 75 67 69 6e 2e 6d 69 72 72 6f  .oldPlugin.mirro
0330: 72 2e 6f 6e 28 27 6f 75 74 67 6f 69 6e 67 5f 66  r.on('outgoing_f
0340: 75 6c 66 69 6c 6c 27 2c 20 28 74 72 61 6e 73 66  ulfill', (transf
0350: 65 72 2c 20 66 75 6c 66 69 6c 6c 6d 65 6e 74 29  er, fulfillment)
0360: 20 3d 3e 20 7b 0a 20 20 20 20 63 6f 6e 73 6f 6c   => {.    consol
0370: 65 2e 6c 6f 67 28 27 49 74 20 77 6f 72 6b 65 64  e.log('It worked
0380: 21 27 2c 20 42 75 66 66 65 72 2e 66 72 6f 6d 28  !', Buffer.from(
0390: 66 75 6c 66 69 6c 6c 6d 65 6e 74 2c 20 27 62 61  fulfillment, 'ba
03a0: 73 65 36 34 27 29 29 0a 20 20 20 20 63 6f 6e 6e  se64')).    conn
03b0: 65 63 74 6f 72 2e 73 68 75 74 64 6f 77 6e 28 29  ector.shutdown()
03c0: 0a 20 20 7d 29 0a 20 20 63 6f 6e 6e 65 63 74 6f  .  }).  connecto
03d0: 72 2e 67 65 74 50 6c 75 67 69 6e 28 27 62 6f 62  r.getPlugin('bob
03e0: 27 29 2e 6f 6c 64 50 6c 75 67 69 6e 2e 6d 69 72  ').oldPlugin.mir
03f0: 72 6f 72 2e 6f 6e 28 27 69 6e 63 6f 6d 69 6e 67  ror.on('incoming
0400: 5f 70 72 65 70 61 72 65 27 2c 20 28 74 72 61 6e  _prepare', (tran
0410: 73 66 65 72 29 20 3d 3e 20 7b 0a 20 20 20 20 63  sfer) => {.    c
0420: 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 27 70 72 65 70  onsole.log('prep
0430: 61 72 65 20 73 68 6f 77 65 64 20 75 70 20 61 74  are showed up at
0440: 20 62 6f 62 21 27 2c 20 74 72 61 6e 73 66 65 72   bob!', transfer
0450: 29 0a 20 20 20 20 63 6f 6e 6e 65 63 74 6f 72 2e  ).    connector.
0460: 67 65 74 50 6c 75 67 69 6e 28 27 62 6f 62 27 29  getPlugin('bob')
0470: 2e 6f 6c 64 50 6c 75 67 69 6e 2e 6d 69 72 72 6f  .oldPlugin.mirro
0480: 72 2e 66 75 6c 66 69 6c 6c 43 6f 6e 64 69 74 69  r.fulfillConditi
0490: 6f 6e 28 74 72 61 6e 73 66 65 72 2e 69 64 2c 20  on(transfer.id, 
04a0: 66 75 6c 66 69 6c 6c 6d 65 6e 74 2e 74 6f 53 74  fulfillment.toSt
04b0: 72 69 6e 67 28 27 62 61 73 65 36 34 27 29 2c 20  ring('base64'), 
04c0: 66 75 6c 66 69 6c 6c 44 61 74 61 29 0a 20 20 7d  fulfillData).  }
04d0: 29 0a 20 20 63 6f 6e 6e 65 63 74 6f 72 2e 67 65  ).  connector.ge
04e0: 74 50 6c 75 67 69 6e 28 27 61 6c 69 63 65 27 29  tPlugin('alice')
04f0: 2e 6f 6c 64 50 6c 75 67 69 6e 2e 6d 69 72 72 6f  .oldPlugin.mirro
0500: 72 2e 73 65 6e 64 54 72 61 6e 73 66 65 72 28 7b  r.sendTransfer({
0510: 0a 20 20 20 20 61 6d 6f 75 6e 74 3a 20 27 31 30  .    amount: '10
0520: 27 2c 0a 20 20 20 20 66 72 6f 6d 3a 20 27 6d 65  ',.    from: 'me
0530: 27 2c 0a 20 20 20 20 74 6f 3a 20 27 79 6f 75 27  ',.    to: 'you'
0540: 2c 0a 20 20 20 20 69 64 3a 20 75 75 69 64 28 29  ,.    id: uuid()
0550: 2c 0a 20 20 20 20 65 78 65 63 75 74 69 6f 6e 43  ,.    executionC
0560: 6f 6e 64 69 74 69 6f 6e 3a 20 63 6f 6e 64 69 74  ondition: condit
0570: 69 6f 6e 2e 74 6f 53 74 72 69 6e 67 28 27 62 61  ion.toString('ba
0580: 73 65 36 34 27 29 2c 0a 20 20 20 20 65 78 70 69  se64'),.    expi
0590: 72 65 73 41 74 3a 20 6e 65 77 20 44 61 74 65 28  resAt: new Date(
05a0: 6e 65 77 20 44 61 74 65 28 29 2e 67 65 74 54 69  new Date().getTi
05b0: 6d 65 28 29 20 2b 20 31 30 30 30 30 29 2c 0a 20  me() + 10000),. 
05c0: 20 20 20 69 6c 70 3a 20 70 72 65 70 61 72 65 2e     ilp: prepare.
05d0: 74 6f 53 74 72 69 6e 67 28 27 62 61 73 65 36 34  toString('base64
05e0: 27 29 0a 20 20 7d 29 0a 7d 29 0a                 ').  }).}).