- [ ] `var_int.value` vs `var_str.str` vs `var_list.list` - [ ] `net_addr.addrs` vs `inv.inventory` vs `error.vector` - [ ] `pubkey.needed` vs `msg.identities` vs `broadcast.subscriptions` - [ ] `bootstrap`/`connect`/`listen` API: it's better to always use objects instead of positional arguments. (E.g. `{host: "1.2.3.4", port: 8444}`) - [ ] `connection` pass 3 positional arguments (should it pass `transport, {host, port}` instead?) - [x] error message `fatal` field is nonintuitive (better to use something like `type`) - [x] version message `version` field is nonintuitive (better to use something like `protoVersion`) - [x] version message `streamNumbers` field is awkward - [x] High-level checkings (like connection to self detection) probably should lie in transport code - [ ] Exceptions in transport callbacks propogated further: do we want to auto-catch and warn about them? - [ ] Somehow make it clear that methods like `tryDecode` and `validate` don't throw exceptions
var_int.valuevsvar_str.strvsvar_list.listnet_addr.addrsvsinv.inventoryvserror.vectorpubkey.neededvsmsg.identitiesvsbroadcast.subscriptionsbootstrap/connect/listenAPI: it's better to always use objects instead of positional arguments. (E.g.{host: "1.2.3.4", port: 8444})connectionpass 3 positional arguments (should it passtransport, {host, port}instead?)fatalfield is nonintuitive (better to use something liketype)versionfield is nonintuitive (better to use something likeprotoVersion)streamNumbersfield is awkwardtryDecodeandvalidatedon't throw exceptions