--- Log opened Fri Jan 28 00:00:43 2022 03:43 < michaelfolkson> sipa: Can you add "Channel logs: https://gnusha.org/miniscript/" to the topic for this IRC channel? Thanks! 06:34 < darosior> re timelocks we do, im just blind 06:37 < darosior> So, i've been working on having GenNode() always return valid nodes, as it currently return invalid ones *much* more often than not. I think i'm almost there, i'm now trying to figure out how to not reach the maximum script size. Does a conservative maximum recursion depth sound acceptable? 06:38 <@sipa> darosior: Did you see my comment about converting it to a fuzz test instead? 06:38 < darosior> Yes 06:38 < darosior> I'm working on that 06:38 <@sipa> I don't think we care about how probably a valid node is under valid input in that case. 06:39 <@sipa> The fuzzer will find the interesting ones. 06:40 < darosior> Right, now i think my target may be actually over-engineered :/ 06:40 <@sipa> not saying improving it isn't useful, it may speed up the fuzz test a bit... but if it adds a lot of complexity, we may worry if the logic isn't accidentally making certain interesting cases entirely unreachable. 06:42 < darosior> It's actually entirely the case, i made a compromise to reduce the reachable ones in order to always have valid ones.. Hmm i'll reconsider, thank you for your input 06:43 < darosior> In the meantime i have a couple of trivial PRs (and should have more soon, including the fuzz target) on the miniscript repo 06:43 <@sipa> So I think a fuzz-targetting GenNode shouldn't try to loop or retry or anything. 06:43 <@sipa> If it hits a situation that's not a valid script/testcase, just return; 06:43 <@sipa> The fuzzer will learn that that input doesn't lead to improved branch coverage, and not spend much time exploring it. 06:44 < darosior> Yeah 07:00 <@sipa> Do we also want to try to get rid of the CScript += etc? 07:00 <@sipa> I saw that mentioned in review somewhere. 08:56 < darosior> Yes, i'll check that too 09:04 -!- salvatoshi [~salvatosh@genymobile-2-6-86.fib.nerim.net] has quit [Ping timeout: 250 seconds] 09:25 < darosior> sipa: what are scripts whose Miniscript representation can differ? Specifically which nodes make Ms->Script->Ms non-deterministic? 09:29 <@sipa> I'm not sure if I have an exhaustive list. 09:32 <@sipa> But e.g. and_v is just a concatenation, and I believe this leads to non-unique miniscripts. 09:33 <@sipa> Or something with the v: wrapper. 09:35 <@sipa> and_v(and_v(A,B),C) and and_v(A,and_v(B,C)) are the same. 09:35 <@sipa> They obviously also have the same semantics. 09:35 <@sipa> That's another reason to support n-ary and_v, I think. 09:39 < darosior> Ok, i was curious cause i noticed this with my own boutique parser, but then i never encountered it with my fuzzing target on the C++ code which mistakenly asserts this (which i ran for a decent time, with imo good seeds, and which found many other bugs but never failed this assert). 09:40 <@sipa> c:and_v(A,B) and and_v(A,c:B) are also the same. 10:54 -!- sandipndev [sandipndev@2600:3c00::f03c:92ff:fe8e:dce6] has joined ##miniscript 10:55 -!- sandipndev123 [~sandipnde@shindig.notmandatory.org] has quit [Ping timeout: 256 seconds] 10:55 -!- andytoshi [~apoelstra@user/andytoshi] has quit [Ping timeout: 256 seconds] 10:55 -!- andytosh1 [~apoelstra@user/andytoshi] has joined ##miniscript 10:55 -!- michaelfolkson [~michaelfo@138.68.143.20] has quit [Ping timeout: 256 seconds] 10:55 -!- _aj_ [aj@user/aj/x-5857768] has quit [Ping timeout: 256 seconds] 10:55 -!- _aj_ [aj@cerulean.erisian.com.au] has joined ##miniscript 10:55 -!- _aj_ [aj@cerulean.erisian.com.au] has quit [Changing host] 10:55 -!- _aj_ [aj@user/aj/x-5857768] has joined ##miniscript 10:55 -!- michaelfolkson [~michaelfo@138.68.143.20] has joined ##miniscript --- Log closed Sat Jan 29 00:00:44 2022