UNPKG

urbit-key-generation

Version:

Key derivation and HD wallet generation functions for Urbit.

52 lines (49 loc) 1.57 kB
/* ^- @ux %- jam => [2 2] != =- (ack +< +>) => %kack ~% %kack ~ ~ |% ++ dec ~/ %dec |= a=@ =| i=@ |- =+ n=+(i) ?: =(n a) i $(i n) ++ ack ~/ %ack |= [m=@ n=@] ?~ m +(n) ?~ n $(m (dec m), n 1) $(m (dec m), n $(n (dec n))) -- */ var compiler = require('../compiler.js'), serial = require('../serial.js'), noun = require('../noun.js'), bits = require('../bits.js'), test = require('tape'), n = noun.dwim, pill = noun.Atom.fromString("6eca1c00a1bac286c86483dc21dc324164dbf18777e361a371d5186b441bf187fe30f5b1b0bc071d5186b441bf1870028700287bb287d612eb0a1b21920e2aa1b26ce8a1af7086c8648384a86bdc21b21920c00a1e6364278c2598964324180143986482c9abdc21b21920b47a87df8db85d87484cc2e109efc6dc2ec38b4e2c9afc37e30ef8971b2b23c071e8e6c2cdf0168837e30f2643241f213dc21b9421b21920f1097ea13225b85d876266164dc5937bf1b26e2d8b26bf0b8b26eb63616bf818bf0b041", 16), formula = serial.cue(pill), context = new compiler.Context(); var getSample = noun.Noun.fragmenter(n(6)), jetCalled = false; function decJet(core) { jetCalled = true; return bits.dec(getSample(core)); } test("nock ackermann function", function(t) { t.plan(3); t.equal(context.nock(n(2,2), formula).valueOf(), 7, "unjetted 2,2"); context = new compiler.Context(["kack", null, [["dec", decJet]]]); formula = serial.cue(pill); // old formula will remember there is no jet for dec t.equal(context.nock(n(3,9), formula).valueOf(), 4093, "jetted 3,9"); t.ok(jetCalled, 'jet was called'); });