--- Log opened Tue Sep 08 00:00:13 2020 00:28 -!- reallll [~belcher@unaffiliated/belcher] has joined #utreexo 00:31 -!- belcher_ [~belcher@unaffiliated/belcher] has quit [Ping timeout: 265 seconds] 01:21 -!- jb55 [~jb55@gateway/tor-sasl/jb55] has quit [Remote host closed the connection] 01:22 -!- jb55 [~jb55@gateway/tor-sasl/jb55] has joined #utreexo 05:15 < dergoegge> Early meeting today right? 05:28 < fanquake> I think so 05:31 -!- reallll is now known as belcher 05:32 < adiabat> yeah early today, in 30 min 06:00 < kcalvinalvin> ok cool 06:00 < kcalvinalvin> Wasn't able to get the new tree stuff working in time though :/ 06:02 -!- ghost43 [~daer@gateway/tor-sasl/daer] has quit [Ping timeout: 240 seconds] 06:16 -!- ghost43 [~daer@gateway/tor-sasl/daer] has joined #utreexo 09:57 < dergoegge> adiabat: maybe i am wrong but i think `polSwap` does not work properly with remembering leaves. If you have 4 leaves A,B,C,D and A points to B (A->B), B->A, C->D, D->C then if you swap A and D via polSwap the nieces of B and C get swapped which results in B and C pointing to cousins and that feels like it could get messy if further swaps occur. 09:58 < dergoegge> the remembering stuff is very hard to think about with swaps happening 🤯 10:09 < dergoegge> https://github.com/mit-dci/utreexo/pull/180#issuecomment-671339858 10:10 < dergoegge> maybe worth it to try out what you suggested there. seems easier to wrap my head around... 12:31 < adiabat> so far it does work with pollard (I think!) 12:32 < adiabat> the basic rule is trim any 'dead end' that has no nieces 12:32 < adiabat> and leaves with a fake "remember pointer" don't count as dead-ends 12:33 < adiabat> in this case A doesn't point to B, for the leaves their niece pointers become bools 12:34 < adiabat> those pointers are never followed since they're already at the bottom and there's never ambiguity about which row we're on 12:35 < adiabat> so the only thing a leaf's neice pointers are used for is the deadEnd() call 14:05 < dergoegge> hm ok a different example: again 4 leaves, remember A and B, don't remember C and D, now swap A and D. you end up remembering D and C after the swap. is that ok? 15:25 < dergoegge> don't merge #185 just yet, i think it still needs some more thought (and tests). i left a comment on the PR explaining why 16:38 < adiabat> I think that's OK as remembering is slightly contagious 16:39 < adiabat> you want to remeber both the node itself and its proof, which includes its sibling 16:40 < adiabat> that should only happen at the bottom though 16:40 < adiabat> in fact, slight inefficiency there - if there's A, B, C, D on the bottom... or 0 1 2 3 16:42 < adiabat> and then there's 4, 5 above that and 6 is the root 16:42 < adiabat> if 3 is memorable and nothing else 16:43 < adiabat> you actually *don't* want to keep 3 in ram, you *only* want to keep 2, 4, 6 16:45 < adiabat> you don't actually want to keep 3 since you're getting the preimage of it anyway as the utxo data 16:45 < adiabat> hmmmm maybe there is a way...? 16:47 < adiabat> tag it so that 2 having the non-null pointer actually means "my sibling is marked as memorable" 16:49 < adiabat> then if 2 moves, it loses its memorable pointer and whatever comes in gains it 16:51 < adiabat> it's not a huge deal because it's just 1 extra hash on the bottom to keep track of 16:52 < adiabat> but something to think about; you're getting the utxo preimage data no matter what, so don't need to keep the hash --- Log closed Wed Sep 09 00:00:13 2020