14:55:07 meeting 2hrs: https://github.com/monero-project/meta/issues/649 15:24:32 another thing to discuss in the meeting: https://gist.github.com/tevador/50160d160d24cfc6c52ae02eb3d17024#gistcomment-4026264 17:00:29 meeting time: https://github.com/monero-project/meta/issues/649 17:00:36 1. greetings 17:00:36 hello 17:00:56 Hi 17:01:02 Hello 17:01:47 Hi 17:03:17 hi 17:03:31 howdy 17:04:19 2. discussion; today I want to discuss this https://gist.github.com/tevador/50160d160d24cfc6c52ae02eb3d17024#gistcomment-4025357 and the following comment https://gist.github.com/tevador/50160d160d24cfc6c52ae02eb3d17024#gistcomment-4026264 17:04:57 Anyone have thoughts/comments/questions other than tevador and I? 17:05:58 On method 3: account keys must be pre-computed, meaning "account"-level subaddresses (i) would need to be pre-loaded in a lookup table? I didn't have enough time to fully grok that method 17:06:21 (for non-change/self-spends) 17:06:27 not subaddresses, the account key itself (used to generated addresses for that account) 17:06:45 Do I get that this can be seen as a quite broad question / decision of how to support accounts under Seraphis / JAMTIS, and if yes how? 17:06:50 Basically users would have to tell their software which accounts to look in for funds. 17:07:39 rbrunner: the follow-up comment is about whether/how to support accounts. The original post is about how to efficiently map outputs to addresses/accounts when scanning. 17:07:43 rbrunner: it's more about optimizing output recognition (which accnt/addr the output belongs to) 17:07:57 but there can be tons of account keys, which has a similar issue as method 1 where you need a lookup table, no? 17:08:28 Yeah, but if you basically get rid of rigid account schemes, that does not matter so much anymore, or can get simplified, right? 17:08:47 jberman[m]: hence my proposal to remove the account keys 17:09:41 after listing the pros and cons, I think it's a no-brainer, but I'd like to hear opinions 17:10:13 As far as I can see use of accounts has stayed pretty much a "power user" feature, not even all wallets support them, they are not exactly a roaring success story if you want to be brutally honest 17:10:20 jberman[m]: yes, but at some point the purpose/utility of an 'account' becomes lost if you are generating a lot of them; realistically, the set of accounts should be strictly bounded 17:10:26 Thus if we can simplify there, why not? 17:10:55 yes, we also proposed slashing the account index to 16 bits 17:11:43 rbrunner: it was mostly for merchants 17:11:55 I think accounts should either be fully supported, or not at all. 17:12:06 Interesting. Did it succeed there? Do we know? 17:12:08 but even without account-level tiers, there is still one tier that can generate addresses, but cannot see outputs 17:12:48 I have no idea how people or merchants use accounts currently 17:13:14 Although on second thought, maybe partial support would be ok... if users want to categorize their funds somehow, 'accounts' is the most reasonable way. 17:13:26 I think accounts are a wallet-level feature 17:13:35 Well, at least I have not seen a building up of pressure "When will you finally support accounts?" for wallet that don't support them (yet) 17:14:02 Yeah, but the reference implementation will probably be 99% of users 17:14:39 still, it's probably cleaner if the address specs are agnostic to that feature 17:14:41 I think deprecating "accounts" needs feedback from more users. I use them and it's nice because I get streamlined bookkeeping and a nice abstraction for how funds are spent, without needing to go a deeper level and actually select which outputs I want to spend 17:14:47 Not sure, I think Feather Wallet has made inroads compared with the GUI, and I think they did a conscious decision to not support accounts, because too complicated UX wise 17:15:58 Yes, that's why I liked the approach in the latest comment of a uniform address space that only the wallet logically manages in some "compartments", however you call them 17:16:11 If that really flies 17:16:38 I think the main question today is if 8 bytes longer addresses and 8 bytes larger outputs are worth the optimization of output detection 17:16:46 Maybe we can keep accounts with the simplified scheme but rename them to like 'balance categories' or something to reflect that they aren't 'hard' delineations in the wallet. 17:17:43 BTC and several other coins have accounts as well. From my observations, accounts are rarely used. Part of it is a chicken-and-egg problem. Wallets don't support them since users don't use them, and vice versa. 17:17:58 My personal opinion is that 8 bytes is a pricey worthy of robust output recovery. 17:17:58 Maybe merchants and exchanges are using them, though. 17:18:17 price* 17:18:18 What do you mean with "output recovery" exactly? 17:18:26 view scanning 17:18:39 Rucknium[m]: I have like 10 wallets since I didn't understand accounts at first 17:19:09 With a subaddress table you can have outputs outside the table (this prevents PID address mapping, and similar schemes). 17:19:14 One of the numbers in the BTC derivation paths for BIP44/49-compliant wallets is for account numbers. 17:20:12 And with 8 bytes those "outside the table" problems are (forgive the pun) off the table i.e. solved? 17:20:49 Right; another example: 'generate random subaddress' without needing to know all the subaddresses you already generated 17:21:04 good pun rbrunner 17:21:35 Everything that simplifies has my immediate sympathy :) 17:22:15 (with 'generate random' and 40-bit addresses, a collision will occur 50% of the time over 1mill generations) 17:24:45 I think the output scanning layer would simply return "this output goes to this 56-bit index" and the higher layers would interpret that somehow (could even be a flat 56-bit address space) 17:25:33 right 17:25:43 Is it 40 bit if we keep a reasonable number of fixed accounts? 17:25:52 40 bit with 16bits of accounts 17:25:58 Ah ok 17:26:21 or 'categories' maybe ^.^ 17:27:46 One of the nice aspect of today's account is that they restore from the blockchain. If we loose that seems to me we devalue them quite a bit. But can't have all, I guess 17:28:19 ^ that aspect would not be lost 17:28:34 Even with a flat space of 56 bits? 17:28:42 On the lowest level 17:29:00 you don't lose anything, that's just a different interpretation of the same data 17:29:31 you could treat the 56 bits as 16+40 bits and get accounts 17:29:51 Hmm, yes, but this may then - at least potentially - differ from wallet to wallet. 17:30:18 I mean wallet app to wallet app 17:30:19 the reference implementation sets the standard, and it is up to other wallets to follow/go a different way 17:30:24 one thing is what is written in the specs, actual implementation is another thing 17:30:59 So if we kept 16 bit "accounts"/categories, the client would precompute 2^16 keys and keep them in memory, right? And if accounts are deprecated, this isn't necessary? 17:31:06 wallets already have the freedom to do something different with indices (not that any of them do, afaik) 17:31:37 jberman[m]: exactly 17:31:53 jberman[m]: that is an option, though imo only categories the user manually adds should be precomputed 17:32:16 Or if accounts are pushed one or two levels up the processing hierarchy, if I understand correctly 17:32:19 the point is that if the account index is used for key derivation then accounts become mandatory for all wallets 17:32:23 It would take 2.6s to set up Blowfish contexts for 65k keys. 17:33:28 are collisions possible today too? or would that be new 17:33:43 collisions where/ 17:33:44 possible within reason 17:34:15 That you can find two pairs (account, address within account) that result in the same subaddress? 17:34:19 "(with 'generate random' and 40-..." <- here 17:34:34 with 64-bit PIDs, collisions are possible if you have 100+ millions of them 17:34:40 yes generating a random 32-bit subaddress index will also have collisions 17:35:12 with 32 bits, you will get collisions with ~thousands 17:35:35 Because the reach the same ECC point or whatever within the precision used? Or something like that :) 17:36:05 it's extremely unlikely that two different addresses will have the same key 17:36:05 It is just an index that is random, not the ECC point 17:36:27 Anyway, if we also can have collisions *with* accounts, that's not a definite pro of them. 17:36:33 If you randomly generate the same index twice (collision), then you'll get the same adddress 17:37:09 No, I mean whether you can number through all possible accounts and all possible address within them and never get the same subaddress twice 17:37:49 with a guarantee 17:37:50 yes, the set of all possible addresses won't contain collisions except with negligible probability. You need 2^128 random ECC points to get 50% chance of collision. 17:38:26 Ok, so probably not in this universe anymore 17:38:55 who's generating random subaddresses and why does a collision at the index matter? users increment them 17:39:34 I think that was one argument merchants used against subaddresses, "you can generate PIDs at random" 17:39:52 I mean if you forget how many addresses you have. Or maybe you have some service generating addresses for you and don't want them to collide with addresses you generate on your own machine. 17:39:59 I think that would just be a particularly easy implemenation for merchant system, because they don't have to "slog" around info where they stand with the counter 17:41:51 So we have now possible collision rates for random subaddresses on the table which are a bit uncomfortably high, seems to me 17:42:08 that strikes me as not-so-robust today 17:42:10 rbrunner: slog = schlepp? 17:42:10 with the encrypted address tags, merchants could generate indices randomly, but they would still have to check for collisions. I think even with PID this is required unless you have just a few orders overall 17:42:14 Btw in the future we might hear complaints that 40-56 bits is too small for PIDs... don't you need like 10-16 bytes for robust PIDS? 17:42:23 Yeah, "schlepp" 17:42:35 ideally merchant system would use a shared counter to generate addresses 17:43:20 with the lookup table based search, a shared counter is a requirement 17:45:12 My head hurts, with so many conflicting pros and cons ... 17:45:20 Difficult decisions 17:46:03 what are the conflicting things? the only con to 'make a change' is the addition of 8 bytes to outputs/addresses 17:46:50 Well, if that does not open the way to successfully generate random subaddresses without fear / checking for addresses, that's maybe a con? 17:46:51 one thing that's nice: I think method 2 is inferior to either method 1 or method 3, so that one can be eliminated to reduce decision surface 17:47:09 there are two things we are discussing: 8 bytes for more robust output discovery, whether/how to deprecate accounts (a basically unrelated question) 17:48:13 jberman[m]: you mean method 1 is inferior to 2 and 3? 2 can do the same thing as 1, but adds more options 17:48:58 rbrunner: maybe you'd like to propose going to 16 bytes (we need a multiple of 64 bits with blowfish, unless we can find a good 32-bit cypher and can do 12 bytes)? 17:49:17 16 bytes is overkill 17:49:36 I just mean to reduce collision rates* 17:50:46 that's a lot of blockchain bloat just to make merchants spend a bit less on development 17:50:51 collisions are possible across any scheme we're looking at, no? I don't see how in any scheme, someone can without fear successfully generate random subaddresses without checking for collisions 17:51:07 I think I have through the info in the gist more thourougly than I did so far, I suspect I have some gaps in my understanding 17:51:52 I don't think avoiding collisions when randomly generating wallet addresses should the the goal. 17:52:04 tevador: good arguments IMHO 17:52:38 tevador: I agree 17:52:52 Maybe that possible goal turns out to be a mere detraction 17:54:30 But then again, if people generate subaddresses, say, "sensibly", how robust must our output discovery be? 17:55:26 Will we ever not catch one? 17:55:31 Realistically 17:55:35 AFAIK the github repo gets a lot of issues like "wrong wallet balance" etc. 17:55:50 all of that would be gone with this scheme 17:56:12 True, like Reddit, but at least there I have the impression it's almost simply restore height. 17:56:32 https://github.com/monero-project/monero/issues/8138 17:56:36 And not people fooling around with "exotic" subaddresses, far out or otherwise 17:56:39 here's a recent one: https://github.com/monero-project/monero/issues/8138 17:57:17 I think the added cost of 8 bytes per output for robust subaddress discovery is a solid cost 17:57:26 Which could solve with just using suitable startup parameters? 17:57:28 And deprecating accounts is something I'd imagine would need community feedback on 17:58:14 we don't want to deprecate accounts, that was never proposed by anyone AFAIK 17:58:18 well everything needs community feedback obviously, but more knowledge on how accounts are used from community members would help 17:58:25 'suitable startup parameters' will always be a hacky solution prone to edge cases 17:58:43 Sure, but if I understand correctly there are ways to keep accounts and still simplify things like key generation / handlich right? 17:58:54 the proposal was to deprecate account-level wallets in jamtis 17:59:33 e.g. I can create a wallet that can only access account number 1 18:00:08 Ah, now I understand that. That does sound like a little overkill, at first hearing. 18:00:16 IMHO 18:00:24 what is overkill? 18:00:32 Was my comment not clear? https://gist.github.com/tevador/50160d160d24cfc6c52ae02eb3d17024#gistcomment-4026264 18:00:37 To have such fine-grained view wallet types? 18:01:16 No, I think the comment is clear, I should have going back to look up the tiers ... my bad probably ... 18:02:06 I mean, only few people use accounts, how many people then will use a view-only wallet that is restricted to a single account? 18:02:51 It was originally meant as a feature for merchants and I thought it had no downsides, but it turned out to have downsides. 18:05:15 Personally I don't have a problem if those account-only view wallets turn out to be nothing mere than a fleeting dream :) 18:05:15 "and it would be up to the wallet how that address space is divided." -> in other words, a wallet can say "the first 1000 addresses are -> account 1, next 1000 addresses are account 2" etc. something like that but with more sensible figures? is that how accounts would be kept? 18:06:32 exactly 18:07:00 Good. I was also understanding it this way, and I became convinced today that would work out. 18:07:04 the main point is that the addressing scheme would become independent of how accounts are defined (and if they are defined) 18:07:04 right now the 64-bit address is mapped into 2 32-bit address/subaddress indices; that mapping is wallet-defined 18:07:28 64-bit address index* 18:07:33 If the reference implementation goes ahead and proposes something sensible that people then follow, except if they have good reasons not to 18:08:05 No need to hard-code this so deep, even into the blockchain like today 18:08:49 I follow, I like 18:09:03 OK. So I will update the proposal not to assume any particular structure for the address index. 56-bit indexes also seems sensible to me 18:09:16 no objections from me 18:10:15 is there a consensus about the 8-byte encrypted address tag? do we need more feedback (not many attendees today)? 18:11:11 Hard to say, with the gaps in my understanding I detected today ... 18:11:30 A bit out my league :) 18:12:28 I like em 18:14:07 Well, maybe there are not strong negative feelings. tevador if you are on-board and willing, it might be fine to add the 8-byte tags to jamtis. The final iteration of jamtis will require and get a lot more scrutiny. 18:14:42 We are past the hour now, so I will call the meeting here. Thanks for attending everyone. 18:14:55 Are we getting closer to a "menu" that would be understandable for merchants, exchanges, wallet developers, and users? 18:14:58 Very interesting today, thanks 18:15:58 I think we are converging on a proposal that might be close to final 18:16:44 Just give me some time to update the gist 18:16:59 Yeah the only open question in my mind is exact semantics for the reference implementation of accounts/addresses. 18:20:49 After consulting a thesaurus... 'address category' is probably the best alternative (just 'category' on the user-facing side) :) 18:23:35 I want to capture that an 'account' doesn't have any strict significance. They are more like collections/groups of addresses for organizing your balance... 18:45:14 "I want to capture that an '..." <- Why not use the terms "collection" or "groups" then? IMO if you are using common words (of similar length) to define another word, just use the words from your definition instead. 18:54:14 From a UX perspective, I'm fine with doing away with the entire concept of accounts. They were confusing to me when getting started because I expected them to DO something (like, require separate passwords or something). Simply generating new subaddresses without any grouping is enough in my opinion. 18:54:14 In most use cases where you want a separation of funds or grouping of addresses, you're really better off with a separate wallet with its own unique seed and private keys anyway. 18:56:55 wernervasquez[m]: lol maybe you're right 19:49:54 Aren't they useful for comingling funds but tracking them separately? I wonder how many people actually use that functionality? Perhaps husband and wife joint wallet with separate accounts in case someone dies they can access either. 19:51:20 if anyone has contacts at kraken we should just ask them what they want :) 19:53:10 or alex local monero guy