After a few weeks of challenges with development, we are back on track!
For this update we will share something about our blockchain backend, bug bounty and an explanation about new features. Since now we will have a bit more time to squeeze in more bugfixes and usability requests. So keep spamming, the list will get very short, very soon ;-)
Our Smart Contract developer Belma Gutlić shared some insights of development on a more scalable blockchain backend solution:
In the AllianceBlock portal, some of the smart contract transactions are being called from the blockchain backend. This was done mainly for the investment process to be able to achieve automatic payments (of tokens) and therefore a better UX for the end users. Also, we’ve used only one ECS (Amazon Elastic Container Service) for this, which isn’t able to scale.
However, initiating transactions coming from different sources on the backend raised some issues. The biggest one was setting the nonce (the transaction count of an account) for each transaction. Mainly because of the following restrictions of a nonce:
- Transactions must be in Order: You cannot have a transaction with a nonce of
1mined before one with a nonce of
- No Skipping! You cannot have a transaction with a nonce of
2mined if you have not already sent transactions with a nonce of
We managed to solve this with a local and in-memory queue but this was not scalable as we couldn’t manage a high concurrency and we couldn’t possibly create more instances as they wouldn’t share the same queue. Scaling this with Elastic Container Service (ECS) would cost a lot more and would ultimately become very unrealistic. So we tried a different approach.
So, here is what we did to make our transactions from backend truly scalable, more robust and at a fair cost.
Every source submits it’s transaction to Simple Queue Service (SQS) where the transaction waits to be submitted to the network by the transaction executor. We’ve used lambda functions for this and we’ve divided the execution process into two lambdas:
1. Transaction executor lambda
This lambda is called when a transaction arrives in SQS and should be submitted to the network. It includes the signing and submitting of a transaction. This transaction executor can be easily scaled by multiple instances and assigning each instance their own wallet with a separate nonce counter.
2. Blockchain observer lambda
This lambda is called when a new block is mined. It checks if any of the submitted transactions are included in the block. If so, a receipt is sent to the original transaction source.
Conclusion: when we upgraded mainly the frontend before to work more asynchronous regarding blockchain transactions, we were aware of the limitations of the backend as well. Although they wouldn't be visible for you as an user, you would definitely notice on a crowded day or congested network. Not only would transactions take longer, risks of a failed transaction would increase as well. By tackling these issues on both the frontend and backend we will make sure to have a robust solution that will work in any scenario, so that investment opportunities will not be missed.
In the past few weeks we were unfortunately unable to work on the bug bounty list or usability group list. As the list grew, our excitement grew as well to tackle them quickly in the near future. In the coming two weeks we will tackle as many as we can, while mainly focusing on improving security and usability.
A new bug was added in the Usability Group. Since we consider this a bug, it's removed from the Usability Group's backlog, and added to the Bug Bounty List (thank you johnraven).
A few notes regarding some of the above issues to take into account:
Show messages from the same subject as a conversation
This will be further discussed in the usability group. We wanted to solve this simply by grouping the messages, but a discussion emerged and we saw many other possibilities as well. To make sure the messaging feature is going to be useful to the users we will discuss it in the usability group to refine this feature.
Cannot access account when you forgot password before activation
We have decided that it's no use to solve this issue now where it's depending on another piece of code that will be changed in near future anyway. At this point, when this issue will arise, the account will be still empty (since it's a new account), and we suggest to send an email to firstname.lastname@example.org to let us help you resolve this issue.
Cannot use portal on mobile with a new account because of the download private key modal blocking access
We have decided that we will upgrade the mobile version of the website at a later stage (still to be announced). Until then, we will not solve issues, as one solved issue will lead to another, and then another, etc. This issue will remain on our list of issues to solve, but will have a lower priority for the time being.
Profile setup for new account can freeze up when saving
This was an interesting issue, which we could not reproduce. It appears that in some cases the following dialog cannot be loaded in FireFox (most likely due to a popup-blocker plugin or something similar):
Without this dialog, you cannot continue setting up your account. It would be interesting to see in which combinations of plugins and browsers this popup doesn't show. If you have an account, haven't setup your profile up yet, and have some sort of cookie wall, pay wall, pop up or ad blocker plugin or similar, please let us know if it works for you (either in our Telegram group or through email@example.com).
- Click on your avatar when logged into the portal
- Click on account settings
- Enter your profile information
- Click the button on the bottom
- You should now see the above dialog with the "Setup Privacy Settings".
If you do not see that button, please let us know including information about your operating system, the type of browser you use and any relevant plugins that might interfere.
Country dropdown has sometimes scrolling issues
When setting up your KYC, the country dropdown is not perfect. Two issues are related to this:
- Countries not sorted well
- Filter countries on first letter when typing
This specific issue however, could not be reproduced. Like the previous issue, we are curious about your experience. Haven't set up your KYC yet? Head out to the KYC page, try it out and immediately see if the country dropdown scrolls smooth for you (the sorting and filtering are already under our attention).
For a while now we are increasing our scalability while completing other general tasks for the portal. A big new feature hasn't been released anymore because of this. We are really excited about some new features that are to come (milestone based financing, company onboarding, community management, AMA's, etc.), but we have a few other things to do first.
While we increase our scalability, make sure the portal gets more secure and more user-friendly, we are also talking to regulators. In order to prevent rewriting a feature because we need to do it differently (with regards to a more scalable or regulation compliant environment), we are holding these new features off for now and focussing on creating an extremely strong and secure basis to work from. When all is clear we will dive on new and exciting features again, all while getting ready for a mainnet launch.