Weekly Firo Development Meeting Minutes

Hardfork Related

  • As blocks are being found faster, any changes based on block numbers will also happen sooner. So there are several factors that need to change because of this
  • Events listed below are affected and the block number will be adjusted in PR #1185. Dates are unchanged
    • Time of second Halving
    • Interval between halving
    • Time for end of spork support etc
  • Peter will be adjusting the parameters so the timing/total supply is exactly the same as before
  • Spork support/Start of lelantus plus 2 years (in another six months)
  • Changes need to be made before 3 months from now otherwise the old version will have a hardfork.

Lelantus Spark

  • Levon has more or less finalized Spark state code related to Spark index, wallet scan and minor stuff. Most of the code has been pushed into a new branch. Spend Transaction creation code will be next to be looked in.
  • Preliminary of Spark PRs will be review by Peter
  • Levon will spend some time planning on the mobile design

Electrum Firo

  • Gevorg added support for Ledger Nano S Plus PR #18 and finished with app crashing issue PR #19
  • Gevorg will be looking into Docker build issues for Electrum Firo

Elysium

  • Sproxet came back from leave and will finishing up Elysium

Bug fixes

  • Looking into threshold tx creation size and tx relay size. Issue where transaction was created successfully but not being broadcast due to being over the relay size limit

Miscellaneous

  • Gevorg changing qt signal-slot connect syntax from String-Based to Functor-Based PR #1186
2 Likes

July Week 1

Lelantus Spark

  • Levon continues work on Spark and second PR to be made after first one is merged

Faster block

  • Peter worked on parameter adjustments PR #1185, to be reviewed by Levon
  • Peter moving countries so working slower

Bug fixes

  • Block Creation Bug: Levon and Peter working on fixing this bug. PR #1187 that fixed the error bad-txns-inputs-missingorspent error happening on miner.
  • Peter will be doing a clean fix for this bug

Miscellaneous

  • Gevorg worked on fixing Linux build of Firo masternode tool. Also worked on Electrum Firo docker build.
  • Gevorg was assigned to look into Ledger live integration documentation
2 Likes

Week 2 July

Lelantus Spark

  • Levon worked on Spark spend creation. Reviewed Sarang’s changes in crypto library and merged last week which was needed for spend creation as it allows it factor in to support multiple anonymity sets.
  • Discussion on how BIP47 (RAP addresses) would work in spark. Reuben made decision to deprecate RAP addresses once Spark comes out as Spark addresses meets the same need more elegantly.
  • To finalized Spark spend creation code and start on testing mint/spend functionality

Block Creation Bug

  • Peter worked on a permanent fix for the block creation issue.
  • Incorrect algorithm for transaction selection for mining for block creation problem. RBF (replace by fee) is not possible for us because it conflicts with InstantSend. CPFP (child pay for parent) transactions doesn’t have any conflicts with Instantsend. we can turn off RBF completely.

Electrum Firo

  • Gevorg continues to work on Docker build, will be finishing within this week

Mnemonic

  • Restoration of mnemonic will result in several small issues.
  • Reuben asked for investigation into why wallet require a restart after rescan/reindex to show correct balance.

Electron Wallet

  • After wallet restoration, masternode balances are unlocked until client restarted. Will be fixed soon.
  • Numbering of seed recovery words to be added to be added to avoid confusion after user feedback.
  • Gevorg to reword QT seed recovery window to standardize wording.

Elysium

  • Sproxet worked on an Elysium build. Testing on token creation and issuance is being done.

Misc

  • Gevorg investigated Firo integration to Ledger Live and appears possible with Ledger support.
9 Likes

wow, thank you very much!

1 Like

Yes thanks for the detailed updates, they are very much appreciated.

2 Likes

Is there any progress on SPARK?

2 Likes

Week 4 July

Lelantus Anonymity set

  • A problem was identified by Levon that would cause a failed anonymity set switch once the first set was full.
  • Two mandatory update were released, which v0.14.11.1 is the final one
  • Levon finished the new anonymity set construction fix which include previous set hash into transcript for security.

Lelantus

  • Levon started refactoring spend creation code for including new set in spend creation when the spend is part of overlapping sets. This will be in a maintenance release.

Bug fixes

  • Peter and Levon are still investigating multiple issues of getbalance/funds/sendmany. Firo uses an older Bitcoin core that has some of these issues. Newer versions of Bitcoin refactor this significantly and would need to be addressed in a maintenance release.

Elysium

  • Sproxet is fixing client crashing issues and has isolated the cause of the crash. It is an undefined behavior in evoznode code. Some issues regarding multi-thread synchronization.

Firo Client GUI (Electron)

  • Firo client 2.2.2 for Lelantus anonymity set release that updates firod to v0.14.11.1

Electrum-Firo

  • Gevorg is refactoring contrib folder for builder
  • There are still issues with Docker builder for MacOS and Windows which will be finalized.

Miscellaneous

  • Gevorg is taking a look into adding Ledger Nano S Plus into Masternode tool
  • Testnet integration to Ledger Live is being worked on with Nano app
1 Like

Week 1 August

Lelantus Spark

  • Unit tests implementation are being worked on. There are no significant progress on spend creation and verification due to the previous week spent fixing the Lelantus anonymity set issues.

Lelantus

  • Levon has done works on Lelantus Spend refactoring, there are no major changes. More testing will be done before it will be pushed

Block Creation bug

  • Block creation bug was from 0.14 bitcoin core. Peter to take code from bitcoin 0.22, simplify it and transfer into our code

Client-api

  • Sproxet fixing crashes on client-api and found that 3 out of 4 crashes are not from the client-api side
    • 2 issues are from dash code and 1 on BLS code
  • Made decision to discontinue RAP address integration in Client-API as it will be soon replaced by Spark addresses.

Ongoing Bug fixes

  • insufficient funds with sendmany issue (spending unconfirmed change flag is not enabled) in regards to selectcoins function
  • addressindex (randomly works) getbalance and getaddressbalance often fails and give wrong result (Will need to contact Andrey for assistance)
  • investigated “unlocked until” and wallet continuously re scanning issue

Miscellaneous

  • Levon and Hayk investigating mobile wallet missing mint coins issue reported by AJay
  • Gevorg has finished docker build for Electrum-firo
  • Gevorg has finished adding Ledger Nano S plus and Nano X into Firo-masternode-tool
  • working on testnet integration on Ledger Live
1 Like

Week 2 August

Lelantus Spark

  • Peter and Levon continue to work on Spark. Unit tests continue to be worked on and finalizing spend creation and verification.

Elysium

  • Sproxet continues working on elysium and addressing log display bug
    • Log displayed on client lagging behind what is actually being written in debug.log
  • Elysium will be reset on mainnet to make syncing faster

Ongoing Bug Fixes

  • Peter analyzing addressindex code. Balance changes with reindex is something to do with the order of blocks. Peter has suspicions about what may go wrong with the code. Further code analysis and testing needs to be done. [bitcoin scrapped addressindex from their code and came up with their own].
  • Levon assisting on debugging and investigation addressindex code.

Mobile

  • Levon found issues on mobile regarding crashes and needs debugging. Require Zorayr and Hayk for further investigation.

Miscellaneous

  • Levon assisted on fund recovery on mobile wallet reported by AJay. Awaiting a new address from the user to send recovered funds.
  • Gevorg worked on adding github actions for building binaries for Electrum-Firo. Will discuss changes on Docker build with Anwar.
  • New AtomicDEX released and will update FiroDEX to sync with the latest
  • Gevorg worked on testnet integration to ledger live. Awaiting hardware wallet for further testing.
2 Likes

Week 3 August

Lelantus Spark

  • Levon finished coding Spark spend creation and Verification. Started testing and will finalize the main RPC for initial testing on regtest.
  • There will be bugs to clean up but all primary components of Spark have been coded: Mint, Spend, Verification. Now is UI components.
  • To consult Aram regarding spend/mint limits by end of the week
  • Spend/mint limits is good to have but will make things complicated for Spark to Spark transactions. Reuben decided to not require spend limits for Spark to Spark transactions but consider keeping them for Spark to transparent.
  • Sproxet has joined into help review Spark code.

Spork

  • Spork that allows devs to turn on/off Lelantus in the event of emergencies will end approximately 150 days. Will need to take a poll with the community whether to extend it. Decision should be done by end of November 2022

Elysium

  • Sproxet addressed log issues, significant changes were made and could cause breakage in certain parts of the client. Further testing is being done.
  • Testers to summarize remaining issues for client

Ongoing Bug Fixes

  • Peter investigated addressindex issue and have a solution. To have a fix within this week
  • Peter and Levon assisted Binance on their wallet issue however the issue fixed itself after they created a new wallet. It was probably a corrupt wallet on their side especially due to it being created a long time ago and not supporting HD. The issue was unable to be replicated and further debugging and investigation to be done on this bug.

Mobile Wallet

  • There are some issues with mobile wallets regarding crashing when users try to spend. Levon, Hayk and Zorayr are assisting on the issues.

Miscellaneous

  • Gervog worked on contrib integration for Electum Firo. There weren’t many changes as our repo is not so different from Dash repo. New build to be finalized and adding actions.
  • Gervog merged the upstream master branch for FiroDEX and resolved many conflicts. Will be able to release a new version after testing.
  • Gervog continues to work on testnet integration for Ledger Live
  • Levon to look into increasing the relay limit of transactions on nodes.
9 Likes

Week 4 August

Lelantus Spark

  • Levon has been doing code testing on Spark bug fixes. Peter did some reviews of Spark.
  • Implementation for RPC calls for Spark transaction creation and others has started and will be finalized within the week.
  • Sproxet was reviewing Spark code when they came across Levon’s comment about performance issues when reading from the memory DB. Performance improvements are to be expected.

Ongoing bug fixes

  • Peter found the bug in addressindex. A possible fix has been found and is being tested to be patched. When fixed, get addressindex RPC will work properly.

Elysium

  • Sproxet finished all known Elysium bugs reported by Anwar.
  • More testing is required before the release.

Miscellaneous

  • Lelantus mobile lib: Levon made some testnet params changes in the mobile lib.
  • Electrum-Firo: Gevorg worked on contrib integration. Most changes are from code refactoring so that future integration changes will be easy.
  • FiroDEX: Gevorg will prepare version 0.5.6 to be released. Github actions will use the latest Ubuntu (18.04) to build.
    • Text alignment problems
    • Anwar detected that the text of the amount is overlapping. Gervog has two ideas to fix the issue.
  • Ledger Live: Gevorg worked on Ledger Live testnet integration and will write tests.
4 Likes

Week 5 August / Sept

Lelantus Spark

  • Peter double checked implementation against Spark paper, and everything appears to be in order in the Spark branch.
  • Levon found several bugs and fixes are still ongoing with refactoring on some parts.
  • Levon is almost finished with the RPC code. Some parts of the code were done and pushed. Tests are being done to find issues until a public registry test is available. Hopefully, will finish within the week for the internal regtest release.
  • Levon investigated bech32m encoding for Spark addresses
    • The main goal is to make the Firo address string shorter and checksumming
    • To aim to fit in social media as there are character restrictions (eg. Twitter). If not possible can consider emoji addresses as an alternate encoding mechanism.
    • To look into creating own F4jumble implementation. This is to prevent certain classes of malleation attacks. This allows users to check addresses by eye to check if they are similar.

Ongoing bug fixes

  • Peter tested the addressindex fix. The fix has been working. Additional testing will be done and will release code within the week.

Elysium

  • Sproxet fixed the remaining Elysium bugs. Testing continues to check if ready for release.

Firo Rich GUI Client (Electron)

  • Sproxet worked on transaction creation and removed RAP addresses from Firo Client since RAP addresses will be phased out in favor of Spark addresses.

Miscellaneous

  • Electrum Firo: Gevorg finished the contrib integration docker build for Firo and is awaiting the build to finish pushing final fixes.
  • FiroDEX: Gevorg fixed the text overlapping issue after ordering and to release FiroDEX 0.5.6 after testing.
  • Ledger Live: Gevorg worked on account syncing and added some test cases. More test cases must be added before testing can begin.
10 Likes

This is pretty smart!

3 Likes

Nice and keep it up :wink:

1 Like

Week 1 September

Lelantus Spark

  • Team discussed f4jumble implementation. Engaged Sarang to take care of it with our own implementation to avoid any issues with licensing on f4jumble implementation. Agreed to use bech32m encoding.
  • Levon did some refactoring in the SpendTransaction class code. There were parts of the code that needed cleanup, and implementing serialization fixed a huge memory-consuming logic. Changes will be pushed and require Aram to review.
  • Bug fixing and testing are still ongoing. A regtest version is being prepared as well.
  • Sproxet has been auditing the spark code adherence to the paper and found two instances where undefined behavior was reliably invoked. Spark review tasks are still ongoing.

Bug fixes

  • Peter continued on with the Transaction Index bug. More changes and testing to be done. Hopefully, it will be completed within the week.
  • Levon will be investigating the “transaction too large” issue that was reported.

Elysium

  • There are some issues with using the command line for Elysium
    • The client gets the sets of available inputs and outputs from commands from client-api. When using the command line to spend funds, it does not mark the inputs as properly spent.
  • Sproxet will be refactoring the command line client-api code. The code will be much cleaner after refactoring.

Mobile Wallet

  • Hayk was unable to proceed with fixing the mobile wallet issue due to being unable to get the Electrumx server to deliver the full anonymity set.
    • A new electrumx server will be set up in Europe to see if this solves the issue.
    • There are instances where even a device with a closer server connection will fail to retrieve the anonymity data required.
  • Levon will be finding a way to compress anonymity set data which changesdata encoding and will use less network traffic.
    • Anonymity sets are saved as hex and transformed into JSON.
  • Levon spoke to Hayk about changing timeout parameters but couldn’t find it and said it might be in the mobile code or electrumx server.

Note: the Lelantus Spark implementation on the mobile wallet will be three times larger than the current Lelantus because it saves two group elements and more encrypted data.

Miscellaneous

  • Electrum-Firo: Gevorg fixed the Windows build and will push the fix after the meeting.
  • Ledger Live: Gevorg was finishing adding test cases for accounting syncing. Testing of the sending and receiving functions will start within the week.
5 Likes

Week 2 September

Lelantus Spark

  • Sproxet continues to audit Spark code adherence. Levon will be informed when it is finished.
  • Levon did some bug fixes in the spend creation code and refactored the Spark code. This will require Aram to review the fixes.
  • Peter continues to do reviews on Spark.
  • Mikerah from Hashcloak has delivered a quotation for Spark code review. 80,000 USD for a 4 week review.

Bug fixes

  • Levon fixed the “Transaction too large” issue. PR #1203 has been created and is awaiting review. It was a bug in the coin selection algorithm.
  • The transaction index issue has been fixed by Peter. The code is ready and working. Hopefully to push changes within the week.
  • A bug was discovered that restricts the block size to 500 kB. Needs to be fixed but not urgent
  • Peter to check the transaction relay issue. Wallet is able to create transactions but is not able to relay them.

Elysium

  • Sproxet found an issue where sometimes there is a large elysium value and the transaction will be negative as the client uses JavaScript.
  • BigInt will be replacing JavaScript for displaying integer values. Tests need to be done for coin swap in the use of BigInt.

Mobile wallet

  • Levon is refactoring mobile_api to reduce network traffic. Hex encoding was replaced with base64 that reduces the amount needed to transfer by half.
  • The new mobile wallet electrumx server is awaiting setup and testing by Hayk.

Miscellaneous

  • Ledger Live: Gervog fixed build problems on the Linux and Windows platforms. The Blue App repo needs to be updated to see new Nano devices. The current repo that we forked was limited to v1.6.5. A newer version needs to be forked and created as a new repo.
  • Electrum-Firo: Gervog pushed new changes to the repo
  • FiroDEX: Gervog to fix wrong balance issue
  • Gervog reviewed building issues brought up by Anwar, PR #1192, PR #1196, PR #1202
6 Likes

Week 3 September

Lelantus Spark

  • Reviews on Spark done by Peter are not yet ready to be published.
  • Levon reviewed and merged the new address encoding for Spark done by Sarang.
  • Sproxet was primarily working on auditing Spark and working on helper libraries code.
  • Levon resolved several review comments from Sproxet and pushed the changes.
  • Levon will start the implementation of Spark batch verification this week and will create a test release soon.
  • More tests and Spark bug fixes were still being done.

Bug fixes

  • Transaction index issue: Peter resolved the issue and is awaiting the results of a full sync test. The code is ready to be pushed out for everyone to test. This issue affects the balance displayed by getaddressbalance and the Firo Explorer, but Chainz and Blockbook are unaffected.
  • Transaction Creation but not Relaying: Peter will investigate this issue that has been brought up. The transaction was created but not in the mempool.

Elysium

  • Sproxet fixed known bugs on Elysium reported by Anwar and AJay.
  • A new internal testing binary was released and is to be tested.

Mobile Wallet

  • Android mobile wallet v0.1.20 has been released, which fixes crashing when sending Firo and Balance not showing up correctly.
  • Levon investigated an issue regarding the mobile Electrum server and fixed a timeout issue. There was some inefficiency in code when generating requested data, which has been fully solved.

Miscellaneous

  • FiroDex: Gervog changed the balance domination for BTC, USD and Firo.
    • Gervog also fixed the wrong balance shown on the wallet page.
      • It was merged with upstream and it resolved some conflicts. However, sometimes unexpectedly, Firo changed to Firo-BEP20 in the UI when the swap was not confirmed. The upstream merge fixes this issue as it updates MM2 Services, which correctly detects the coins.
  • Electrum-Firo: Gervog finished the Linux build and will push PR soon.
  • Ledger Live: Integration of Firo into Ledger Live is still being worked on.
7 Likes

Week 4 September

Lelantus Spark

  • Sproxet mostly did spark auditing for the week. The task is mostly finished except for one comment that needs Levon’s input.
  • Levon continues working on bug fixes and testing. All fixes will be finalised and pushed for review.
    • Some portions of the code were pushed related to Spark Spend verification.
    • Doing some refactoring to separate wallet-related logic from verification code to mitigate the risk of attacks.
    • Started implementing multi-threading on spent proof creation and batch verification.

Elysium

Bug fixes

  • Peter continues to work on the address index issue. It is more or less completed, but tests need to be redone because of personal hardware failures.
  • The 500kb block limit issue has also been fixed but not yet tested. PR #1204 was created.
  • Sproxet is assisting with the transaction creation issue and looking at the test cases.
    • To fix the issue with transactions that cannot be relayed
  1. The maximum size of transactions that can be relayed is less than the maximum size of transactions that can be created.
  2. can’t relay something that goes over the limit in some places (not size). Might be the number of outputs op_code etc
  • Levon is assisting in the transaction relay issue (transaction created but not mined). It might be related to Lelantus yet to be sure.

Miscellaneous

  • Peter fixed the compilation issue on newer MacOS. PR #1205
  • Mobile wallet: Levon looked into mobile transactions not broadcasted. For some reason, the extra payload is not serialised correctly. He has asked Hayk to look at the code.
  • Needs to take off IS lock from the transaction after a certain timeout (1-2 months)
  • New dash stuff that needs looking at, to see what needs to update. An executive summary is to be done to check what is relevant
  • Electrum-Firo: Gevorg has finished the MacOS build and added an all-in-one build script to the building binary.
  • Ledger-Live: Gevorg is adding full functionality for account syncing. This is to be finalised this week, and will be working on the sending stuff. A hardware wallet will be arriving to test the functionality.
  • Sporks to be brought up to the community and CFC
  • Reuben will be investigating the epoch and current trend of GPU VRAM size to determine whether to maintain or slow down growth of VRAM required.
4 Likes

Week 1 October

Lelantus Spark

  • Levon worked on fixing and cleaning up the spend verification code, batch verification, and multi-threading implementation. Most of the code has been pushed, and it will be finalized within a week and will have a testing version up for regtest.
  • The following week will be spent on preparing the code for testing and audit.
  • Designing the Lelantus Spark UI will begin after the code is mostly ready.
  • Peter did some PR reviews and will have more time on Firo tasks this week onwards.
  • The initial deadline for spark code was to be set on October 15th, 2022 for audit. However, an extra week will be required to add devnet functionality too (to reschedule to October 22nd, 2022).
  • Levon will go through all of Sproxet’s findings for the spark audit to answer and resolve them.

Bug fixes

  • Transaction Index bug: Peter fixed some problems regarding this issue. It might be related to two different kinds of transaction scripts (P2PKH, P2SH). Modifications need to be made to make it right. The code will be ready to be pushed in a day or two.
  • PR #1204: Firod’s default settings were changed to allow mining blocks of up to 2MB.
  • PR #1205: Resolved compilation issues on newer macOS versions have been merged.

Miscellaneous

  • Ledger Live: Gevorg finalized account syncing and is starting to work on send stuff.
  • Firo-QT: Gevorg will be investigating an extra line on a QT UI bug and adding a feature to hide RAP addresses by default (but have an option to show them in settings) to get ready for spark.
  • Electrum-Firo: An all-in-one build script will be added for all OS building purposes.
  • FiroDex: A new version is ready for release, Reuben will be testing the new version before releasing it to the public.
  • Sproxet worked on transaction creations and adding new functionality as there were no specific unit tests for createTransactions or specific logic for testing coin control features.
  • PR #1186 needs to be tested. This PR changes the qt signal-slot connect syntax from string-based to functor-based.
4 Likes

Week 2 October

Lelantus Spark

  • Levon worked on several Spark tasks:
    • Spark RPC tests and RPC code implementations.
    • Did some bug fixes and have some code to be pushed.
    • Trying to finalize fixing some failing tests within this week.
    • To work on Lelantus to Spark remint code (for transitioning privacy protocol). It will not be as difficult because it will just create transactions when spending Lelantus, creating Spark mint based on UTXO.
  • Peter reviewed some Spark code and looked at Sproxet comments. Peter will write a large number of reviews all at once.

Bug fixes

  • Peter fixed a major bug with the transaction index problem, but one minor bug remains. Still investigating it. The last resort is to update the code with the most recent bitcoin code, but this will involve a significant amount of work.
  • The fix to prevent certain large transactions from being created is working except when coincontrol is used to manually select inputs. A transaction was created, but it did not go into the mempool. The task was given to Gevorg to look into it. This task will be on hold until Sproxet’s transaction creation code is completed.

Miscellaneous

  • Levon will be creating a PR to merge mobile_api branch to master. Enabling it will require “-mobile” flag. This will simplify running mobile firod as there will be one binary version instead of two separate ones currently.
  • Ledger Live: Gevorg finished account syncing tests and will start working on the send stuff next.
  • Firo-QT: Gevorg fixed the UI issue and hid the RAP tab and will add an option for it to be displayed in options.
  • FiroDEX: AtomicDEX recently had a PR opened and a new release will be out soon 0.5.7. Gevorg will wait for a new update before applying to FiroDEX
  • Spork extension: The community is leaning in favor to extend spork. Will close the first question at the end of October 2022 regarding the extension of the current Lelantus emergency switch or letting it expire to give time for the ecosystem to update before the holidays.

Transaction IS Lock

New mining pools are having issues with IS locked transactions causing blocks which included this transaction to be rejected by quorum. This is a remnant of the earlier block generation bug from July wheresome transactions were dropped from the mempool but are still locked… There are 3 possible solutions to solve this:

  • Solution 1: Find the raw transaction and rebroadcast it.
  • Solution 2: Do a workaround which includes a list of transactions for which the lock can be dropped at a certain point of time
  • Solution 3: To introduce a mechanism to automatically drop the lock after some timeouts (eg time out after 3 months) [Hard]
4 Likes