66de09e79c | ||
---|---|---|
analysis/wallet/Router | ||
archive | ||
attachments | ||
priorities | ||
tags | ||
README.md |
README.md
2024-05-31
Pulls
- Removing torrent from mobile build #5257 -
commits
,scoping
- I've fully split Manager from
TorrentManager
- I've removed any mention or dependency of
TorrentManager
fromManager
. There is still more work to do, butMessenger
now communicates directly with aTorrentManager
rather than asking thecommunities
Manager
to handle it. - I've ensured that
LogStdout()
is only called fromTorrentManager
and removed entirely fromManager
, this functionality seems to be some kind of debug tool specifically for torrent related functionality. - Next I need to focus on functions within
Messenger
that call aTorrentManager
and see how to isolate these from the main flows. - I also need fix the tests that are broken.
- I also need to refactor
torrentClientReady()
so that it is a function ofTorrentManager
, this may allow for pushing more functions intoTorrentManager
which will lead to better torrent encapsulation.
- I've removed any mention or dependency of
- Made
torrentClientReady()
belong toTorrentManager
- Unexported all exported funcs not used externally in
TorrentManager
- Mapped for restructure torrent specific
Messenger
functionality - Mapped entire
TorrentManager
API Usage- https://github.com/status-im/status-go/pull/5257#issuecomment-2142881649
- This will augment the restructure of torrent specific
Messenger
functionality, asMessenger
is split across multiple go files. - Once this is done I can identify 2 key things:
- What
Messenger
functionality can be pushed intoTorrentManager
- What the bare minimum
TorrentManager
interface signature needs to be.
- What
- I've fully split Manager from
2024-05-30
Pulls
- Removing torrent from mobile build #5257 -
commits
,scoping
- Resolved TorrentManager dep injection
- I mapped out the details of the deps
- I'm not particularly proud of this work. I've just passed in all the deps as vars, there are way too many concerns handled by the TorrentManager that I don't know what is the best approach to removing them. I've even resorted to declaring an 'Publisher' interface to handle all the 'publish()' calls the TorrentManager makes. Next up I need to resolved the communities Manager API, because I've removed all of its end points. The TorrentManager needs to be a lot more simple than it is.
- Scoping of the TorrentManager API usage
- mapping of the API usage here
- This is so tightly wound into the workings of both
Messenger
andcommunities
.Manager
.
- Resolved TorrentManager dep injection
Schedule
- 11:00 - 12:00 : Andrea and Samuel 1:1
- https://meet.google.com/rhy-trwc-ybb
-
*Magic word*
- 15:00 – 16:00 : mobile-core retro
- https://meet.google.com/hci-mahx-rfr
- Cancelled. Release season merits no retrospection!
2024-05-29
Documents
- Implementing User Stories
- https://www.notion.so/About-implementing-user-stories-fc6bc6b81e54461c85cd1b793cae4e22
- I was given the privilege of previewing and reviewing this stable draft of Status' unified approach to User Stories.
Issues
- Remove torrent dependencies at build time for mobile #5146
- Begun working on this issue.
Pulls
- Removing torrent from mobile build #5257 -
commits
- Initial migration of all torrent dependent code
- Code moved into new
TorrentManager
. This is BROKEN! The code is not ready to use so don't use it, lots more work to do. Biggest problem is that the torrent management inManager
is very tightly coupled to sending encrypting etc. All of that needs to be prised apart
- Code moved into new
- Ensured move of all torrent funcs and structs
- I also ensured that the order of functions matches the original code, to make comparison easier during review.
- Initial migration of all torrent dependent code
Schedule
Note details of this below call were shared in the Snow Blowers' chat and in the general status-go
Discord / Status channel.
- 12:00 – 13:00 : ❄🔥 Snow Blowers (status-go flaky tests) Sync Call
- https://meet.google.com/cvh-crfd-uji
- Igor presented his intent to make diff test coverage at 50% per PR REQUIRED.
- Attendees:
- Igor (facilitator)
- Patryk
- Myself
- Summary
- Discussed the latest nightly flaky results:
- https://ci.status.im/job/status-go/job/tests-nightly/235/Reports/
- https://ci.status.im/job/status-go/job/tests-nightly/235/
- We agreed to target all of the
TestMessengerCommunitiesTokenPermissionsSuite
flakes
- We agreed to activate REQUIRED and considered a number of points that would need to be addressed.
- Generated files should be ignored
- Test coverage of 50% should be reasonable and not burdensome while effective at enforcing necessary code quality.
- We have a mechanism to override the requirement in EXTREME cases
- QA should be given visibility of this work
- Make codeclimate diff coverage test reports Required #5254
- fix missing value of keyuid for old mobile user #5203 A case where the tests are present and seem to be robust but Codeclimate reports that the test coverage is only 36% (this case is notable because it seems unfair, may need investigation)
- refactor_: ExtractTokenCriteria -> extractContractAddressesByChain #5226 A case where code changes are made but have no Codeclimate test coverage report
- Direct settings updates (API) #5237 A case with 0% coverage
- Router Filter Modularisation and Test suite #5177 A case with 100% coverage 😉
- Discussed the latest nightly flaky results:
2024-05-28
Issues
- Refactor
fromIncluded
andfromExcluded
Maps to Slices in Route Validation Logic -created
- Refactor and Simplify
hasSufficientCapacityV2
Logic to Ensure Correct Path Amount Validation -created
- Check Validity of
fromLockedAmount
inSuggestedRoutesV2
-updated
Pulls
- Router Filter Modularisation #5177 -
merged
- Addressed feedback, mostly consisting of follow-on issues for various logic improvements.
- Note: I would prefer to merge the existing logic first, even if this logic is incorrect, because this is how original logic works.
- I just want to make sure that we have a clear history of changes from the original into whatever version we end with.
- I need to rewrite the commit names to follow the new convention.
- Merged!
Schedule
- 12:00 – 12:30 : mobile-core planning
- https://meet.google.com/azr-ppob-obc
- Stand-ups
- Discussed priorities for this week:
- 2.29 Release
- 2.30 priorities:
- Performance
- Installation file size, get under 100mb
- Stablise and polish communities and wallet functionality
- Help where needed.
2024-05-27
AFK - Spring public holiday 🚂🚃🚃🚃
2024-05-24
Issues
- Check Validity of fromLockedAmount in SuggestedRoutesV2 #5227
created
- Follow-on work to ensure the robustness of the wider Wallet
Router
functionality.
- Follow-on work to ensure the robustness of the wider Wallet
Pulls
- Router Filter Modularisation #5177
- Finished! 🎉 Ready for full review
- Big commit implementing additional test cases to make the test suite as comprehensive as I can.
- That doesn't mean it is fully comprehensive
- Addressed feedback
- Resolved insufficient rest test case issue
- Implemented
testing.T
t.Logf
test level logging - Implemented pure
zap
debug logging for all relevant filter functions.
Schedule
- 10:30 – 11:30 : Desktop Send modal review
- https://meet.google.com/pow-qyes-pcv
- "A meeting to dispel doubts about the design and current state of SendModal."
- Attendees:
- Michal C (Facilitator)
- Alisher
- Ben
- Brian
- John (Lea)
- Sale
- Myself
- Summary:
- Discussion clarifying the rules and requirements of the desktop designs for sending tokens.
- No agreement yet on where to capture the rules
- Initially some confusion on the distinction between multichain send "without bridge" and "bridging"
- Confusion as sending over multiple chains requires bridging
- Clarity eventually given; references to "bridging" is a term for a specific UI action and not an implementation behaviour.
- ie in the UI context bridging refers to the user pressing a "bridging" button to perform an explicit bridging action. Not the required routing performed by
status-go
WalletRouter
. - ⚠️ Attention. Devs and QAs particularly should be mindful of this.
- ie in the UI context bridging refers to the user pressing a "bridging" button to perform an explicit bridging action. Not the required routing performed by
- Emphasised that the app should mint
ERC1155
rather thanERC721
tokens- Confirmation that this is the case was suggested.
- Highlighted that there is an inconsistency with the current desktop app functionality verse the intention of the design.
- Locking behaviour for values on specific chains does not work as the product design intended
- Full requirements not yet provided, expected to follow.
- Additional clarification and validation likely to be needed
- Discussed that
ERC1155
tokens of the same kind should be grouped together.- Unclear if designs and requirements for this feature exist in the form needed by Desktop UI.
- Dario has mentioned in chat: > "This is mostly a backend effort with relatively high complexity (define a special kind of token for these "community ERC721 we want to treat as ERC1155" ones, do the grouping backend-side when fetching them, do the un-grouping backend-side when sending, ensure no side effects in activity). I see low chances of swap-team being able to work on + finish that for 2.30, unless it's prioritized over Swap."
- So this intent is / has been expressed somewhere.
- Locking behaviour for values on specific chains does not work as the product design intended
- Brief update from Brian and me.
- The call expressed a blithesome response to the update that the Wallet Router filter modularisation and test suite was complete and ready for review.
- Discussion clarifying the rules and requirements of the desktop designs for sending tokens.
2024-05-23
Pulls
- Router Filter Modularisation #5177
- Resolved a boat load of test scenario issues
- I'm super seriously very nearly finished now.
- However, I do need reviewers to pay super close attention to the test cases and check that the intent of the functions is matched by the cases.
- The full list of changes is available in the PR commits.
- Resolved a boat load of test scenario issues
Schedule
- 11:00 - 12:00 : Andrea and Samuel 1:1
- https://meet.google.com/rhy-trwc-ybb
-
Confidential
- 13:00 – 13:30 : mobile-core planning
- https://meet.google.com/azr-ppob-obc
- Stand-ups
- Discussion of next week's aims and prioritising for release
- John Ngei is the 🤘
mobilecore
🤘 release manager forv2.29
🎉 - Agreed that we should have a weekly standup document:
- We will use the document that Mariia created:
- Anyone can create a new weekly document using the magic template button.
2024-05-22
Pulls
- Router Filter Modularisation #5177
- Resolved a boat load of test scenario issues
- I'm very nearly finished now. However, I do need reviewers to pay super close attention to the test cases and check that the intent of the functions is matched by the cases.
- The full list of changes is available in the PR commit.
- Resolved a boat load of test scenario issues
Scoping
- ₿♢Ξ Revenue, Revenue, Revenue Ξ♢₿
- https://www.notion.so/Monetisation-6421841be37c4343a4342e6715924c91
- Did refinement to some of my market analysis and monetisation recommendations for Status
Ad Hoc
- Confirming details about my EthCC presentation
2024-05-21
Pulls
- Router Filter Modularisation #5177
- Fixes to capacity logic
- handling for nil pointers added.
- updated the tests, quite a considerable amount change on this.
- Fixes to capacity logic
Schedule
- SendModal designs review : 10:00 – 12:00
- https://meet.google.com/qdq-wrzq-mha
- Meeting notes
- Attendees:
- Sale (Facilitator)
- Alisher
- Ben
- Magnus
- Michal C
- Myself
- A very in depth meeting reviewing the send flows of desktop.
- Key Decisions:
- Reduce the scope of the Send, Bridge and Swap UI designs for 2.30
- UI and design to work together
- Desktop UI should detail what is feasible for the 2.30 release
- Alisher and Ben are supportive of facilitating a highly iterative framework.
- Alisher and Ben will adapt sending flows as required
- Michal and Sale would discuss the best process for improving the UI while at the same time being able to deliver something. Include Noelia
- Identified distinctions between the concepts of backend
Router
and UIRouter
- Backend
Router
is a logic model for sending blockchain tokens. This model contains functionality that manages:- Calculating the best path for any given transaction requirements:
- From address(es)
- To address(es)
- From network(s)
- To network(s)
- From token type(s)
- To token type(s)
- The
Router
is capable of using multiple input tokens and addresses to plan a route to multiple output addresses and tokens.- The
Router
determines which swaps and bridges may be required to achieve the goal
- The
- Calculating the best path for any given transaction requirements:
- Backend
Router
can be called by multiple UI components:- Bridging
- Sending
- Swapping
- Backend
Router
handles all of these transaction types internally. - UI
Router
is a complex high level UI component that allows a user to plan with great detail which tokens, addresses and networks they wish for a transaction (or series of transactions to take). - UI
Router
is part of the UI bridging functionality.
- Backend
- mobile-core retro : 13:00 – 14:00
2024-05-20
Pulls
- Router Filter Modularisation #5177
- Resolved a number of weird corruption issues with my local repo of
status-go
, see the comments from today: - Work on resolving some of the logic issues
- Resolved a number of weird corruption issues with my local repo of
Schedule
- 13:00 – 13:45 : bi-weekly status-go call
- https://meet.google.com/gbq-tyqe-vju
- Stand-ups
- Discussion about changes required for Wallet Router to accommodate swap functionality.
- Discussion about the stability work done on Wallet Router.
2024-05-17
Pulls
- Router Filter Modularisation #5177
created
,commits
,research
,scoping
- I've implemented the modularisation of the
filterRoutesV2
function. - In addition, I've added tests to check the functionality works as expected:
- The list is a bit huge, so look at this comment:
- Some tests are failing, see here for details
- I've implemented the modularisation of the
2024-05-16
Issues
- Remove torrent dependencies at build time for mobile #5146
scoped
- Identified where the imports are present in the code
- Identified a viable implementation approach.
- Further work needs to be done to scope how the restructuring of something as big and important as the Communities Manager.
- Initialisation of the Communities Manager should be written in dedicated platform-centric files.
- Calling the Torrent logic should be done via a callback function within the dedicated file.
- As little code as possible should be in the platform-centric files.
- Torrent logic should be stripped out and moved into a dedicated file.
- Add build restrictions to the torrent file.
- Initialisation of the Communities Manager should be written in dedicated platform-centric files.
Reviews
- https://github.com/status-im/status-go/pull/5159
approved
,feedback
- A re-review after Sale made some changes in response to all of the feedback given.
- I've suggested one opinion based change based on function signature complexity, aside from that I've approved the PR.
Schedule
- 11:00 - 12:00 : Andrea and Samuel 1:1
- https://meet.google.com/rhy-trwc-ybb
-
Confidential
- 13:00 - 13:30 : mobile-core planning
- https://meet.google.com/azr-ppob-obc
- Team stand-ups
- Reviewed current milestone goals
- Discussed next release cut timeline
- Overview of longer term milestone goals
- Brief discussion about how much I don't care about github issue labels.
2024-05-15
Coding
filterRoutes
is a very complex function, and it is very difficult to read. I've split it apart and named the levels of filter after what they do rather when they happen.
Reviews
- https://github.com/status-im/status-go/pull/5159
- I gave a rather thorough review of Sale's raft PR
- This PR attempts to resolve or more easily identify problems with the Router by reducing the surface area of the code.
Scoping
- Wallet Router
- Complete analysis for the
findBest
function: - Completed analysis of the
filterRoutes
function:
- Complete analysis for the
2024-05-14
Scoping
- Wallet Router
- I've analysed the main components of the wallet router, see here:
Schedule
- I raised an axe to the crew meetings, swung hard and true. Toppled and prostrate they settled motionless. Tonight we revel in the light of their embers!
2024-05-13
Scoping
- Wallet Router
- I began work on reading and building context of the Route
status-go
logic. - This work is tricky to track, but I have begun making notes of the logic. I plan to continue to build out a description or documentation detailing the analysis.
- I began work on reading and building context of the Route
- Torrent dependencies in mobile build
- https://github.com/status-im/status-go/issues/5146
- Scope work for this issue requires more time, I've identified the imports and dependencies for implementing the backup distribution logic.
Schedule
- 10:30 – 11:30 : Discussion and sync with Sale about planning and scoping of Wallet Router work.
- Discussion giving context on the structure of the Router
- Discussed work done last week in : https://github.com/status-im/status-desktop/issues/14638
- We decided that we need to:
- spend time understanding the code
- determine what work can be parallelised
- 12:00 – 12:30 : Wallet Router Sync
- https://meet.google.com/amj-krdp-dta
- Attendees:
- Alisher
- Andrea
- Emil
- Ivan
- Jamie
- Sale
- Myself
- Notes
- Discussed what should be priorities
- Decided the following:
- Scope the Wallet Router to understand the logic
- Tests should be writen to validate any changes the Router code, but we do not build tests out without introducing changes.
- Tests can be written in the context of demonstrating / exploring how code works.
- Alisher was meant to present the product expectations, but we ran out of time.
- 14:30 – 15:00 : team update
- https://meet.google.com/vnx-agcb-nao
- A very sombre meeting, discussing the recent layoffs