log☇︎
110600+ entries in 0.037s
asciilifeform: this is problem ?
asciilifeform: this also would give mircea_popescu the thing he asked for, which was a litmus that'd let him reject a cycle-creating patch immediately from his light cone, before it can get into his vtron and cause headache. and that is, 'no patch may have a descendant that is also an antecedent of itself or of an earlier-blocktimed patch.'
asciilifeform: you get guaranteed well-ordering.
asciilifeform: deedbot for patches; 1 per block.
asciilifeform: so my cyclic(T)==false, cyclic(T+1)==true, culprit is the signator(s) of the patch closing the loop, worx great, when this condition is adhered to
asciilifeform: but in re: 'timing issue', we had a thread where i brought up 'two(+) d00dz form a cycle, who do we negrate' and specifically stated that deedbot-for-vpatches is necessary, and that any two+ folx who insist on issuing patches into same blocktime, and end up being part of a loop, are ~both~ idiots/wreckers
asciilifeform: otherwise he sits in hell playing cards with the other devils, where he belongs, and daren't stick out his nose.
asciilifeform: i.e. a thing that can only exist if ~everyone~ has been catastrophically lazy/retarded for a very long time.
asciilifeform: mircea_popescu: your 'cycle arbitrageur' is precisely the same devil as my cornered-node-creator and panopticonic gossipd observer.
asciilifeform: i'll add that f, g, e ~may~ be pressable together in some combination, or may not, it depends on the actual 'patchons' inside
asciilifeform: (notation seen here is simply the order in which patches apply.)
asciilifeform: the valid presses in the given graph are: a; a->b; a->b->f; a->b->c; a->b->c->d; a->b->c->d->g; and a->b->c->d->e.
asciilifeform: mircea_popescu: i drew the graph, not seeing what is meant in your example: what means 'now both g->d->e->f->b->a and g->d->c->b->a are valid presses' ?
asciilifeform brb, tea
asciilifeform: the signator(s) of that patch is the culprit.
asciilifeform: at T+1 (after one patch) -- there is.
asciilifeform: say at time T there is no cycle.
asciilifeform: the creator of a cycle is in all cases identifiable. kick his teeth in, negrate.
asciilifeform: imho my solution is the correct one.
asciilifeform: instead of a very simple mapping.
asciilifeform: and now you have a monstrous abortion that has to be 'self' aware
asciilifeform: you can still hash-mine for them.
asciilifeform: give example of how, using the munchausen set.
asciilifeform: and the culprit is immediately and mechanically identifiable.
asciilifeform: because cycles in vflow are a Bad Thing and under no conceivable circumstances good ?
asciilifeform: and i do not see any need for magical strings in comments.
asciilifeform: and anyone who creates one, is quite obviously in the wrong
asciilifeform: cycles -- forbidden.
asciilifeform: imho it is
asciilifeform: i posted this as a litmus test of sorts, for vtrons.
asciilifeform: it will ring alarm if you run it on the munchausen.tar.gz set.
asciilifeform: and btw i ~solved this~ in my first vtron
asciilifeform: they can be applied in the legal order and strictly in the legal order, that's what v is ~for~
asciilifeform: vpatches are not applied 'onto a patch'
asciilifeform: mircea_popescu: there isn't a 'the patch'
asciilifeform: but -- and i'd rather that mircea_popescu do this in his head -- you can make a 'munchausen' where both steps (or however many, it can be as long as you like) reference the genesis.
asciilifeform: but of course i made them the simple way, by vdiffing from genesis, but then deleting one link of the chain.
asciilifeform: the hashes, first of all, check out (make the file consisting of the text line and one newline and see)
asciilifeform: take a guess
asciilifeform: not being an aristotelian, i dun need to!111
asciilifeform: or -- can make for yourself, see.
asciilifeform: i can make you another that follows whatever shape you like.
asciilifeform: you can make entirely similar example where they do, that still contains loop.
asciilifeform: it'd make no difference if they did
asciilifeform: (delete the other 2 patches and sigs and see this for yourself )
asciilifeform: mircea_popescu: a v set consisting solely of genesis is valid
asciilifeform: mircea_popescu: http://nosuchlabs.com/pub/munchausen.tar.gz
asciilifeform: aite. gimme a few min.
asciilifeform: nope.
asciilifeform: a must exist, yes
asciilifeform: i'ma post the example.
asciilifeform: and it is trivial to make, if mircea_popescu really wants, i can post an example set , with a toy key, and he can hang his vtron.
asciilifeform: http://btcbase.org/log/2016-12-23#1589083 << the shortest cycle possible in v (assuming that all of the patches are valid, that is, actually produce the hashes they indicate as descendants, as outputted by gnudiff, as opposed to a hand-sewn crapolade which does not) is a->b->a. this happens if you have a patch 'c' that has 'b' as antecedent but 'a' as descendant. ☝︎
asciilifeform: *who
asciilifeform: think simply of the chess rule, that any player whk recreates a board position that existed at ANY previous point in the game -- forfeits.
asciilifeform: but fortunately-- it is.
asciilifeform: if this weren't easily detectable, vtronics would be entirely impossible
asciilifeform: just end up with even one descendant hash that already existed.
asciilifeform: http://btcbase.org/log/2016-12-23#1589055 << nope. making a cycle is trivial. ☝︎
asciilifeform: (no pressables)
asciilifeform: if they are ~all~ lolcats, you simply have a null flow.
asciilifeform: i will rephrase again for clarity: for so long as you have 1 pubkey, which was used to make 1 seal, and that seal is for one, single patch, your only one, a genesis, you can display a flow. and literally every other file in .seals, .wot, .patches can be a lolcat.
asciilifeform: fuzzing is wrong in all cases, aha
asciilifeform: (no patches, no sigs, and no wot, or simply 1 or 2 of these)
asciilifeform: this includes empty set
asciilifeform: i.e. your tree is still valid.
asciilifeform: literally every other condition is recoverable.
asciilifeform: it is the ~only~ must-die condition for a vtron.
asciilifeform: and fix your wot.
asciilifeform: if you ever see one, you gotta find and negrate the joker who closed the cycle. ☟︎
asciilifeform: it is impossible to operate correctly on a cyclical vflow.
asciilifeform: that is if it finds a graph cycle.
asciilifeform: there is only 1 case where a vtron ~must~ barf
asciilifeform: i will add 1 thing:
asciilifeform: np
asciilifeform: this makes sense now, mod6 ?
asciilifeform: unless and until you put c back in play.
asciilifeform: d is not in your universe no moar
asciilifeform: aha!
asciilifeform: i.e. your vtron doesn't see it in flow any more.
asciilifeform: if this orphans a tree branch, it should simply fall off
asciilifeform: when you, say, remove someone from your wot,
asciilifeform: computing flow must never fail
asciilifeform: when you ask a vtron to press, it has to be for something that is in the flow
asciilifeform: it was computing flow
asciilifeform: but it wasn't pressing in this example
asciilifeform: dying is incorrect here
asciilifeform: mod6: it isn't 'missing', your vtron should simply disregard everything that hung below it
asciilifeform: phf: aah
asciilifeform: if it can't-- zap.
asciilifeform: it is less hairy if you use my algo, where every single patch, when deciding if it gets into the flow, has to trace descent to a genesis, unbrokenly
asciilifeform: mod6: if flow breaks, everything that hung below the breaking point, falls down
asciilifeform: mod6: you got it
asciilifeform: phf: yours did something else?
asciilifeform: aite. how do i help mod6
asciilifeform: this is not possible by definition, either it displays that exist, all of them, and is correct, or not all, then not.
asciilifeform: if he is orphaned, his children also gotta die
asciilifeform: a vtron that displays descendants for a patch that has an antecedent hash that corresponds to no patch, or does the same for any of its apparent children, is incorrect
asciilifeform: recursively
asciilifeform: must have none. it dies.