Dimitar fixed the broken OSX package and the rest of his time went into tracking dead peers. Two optimization points were identified: one with more aggressive approach to detecting missing peers and one with parallization of the TCP pings. He worked on the former but tests are still failing. Time spent 35.75h
As of now, there aren’t any HTTP API tests for those types of events. The is limited testing of getting the dummy spend and transfer_value events from dry-running contracts in the aehttp_contracts_SUITE. The suite would need to be extended with more types of contract to ensure that e.g. all such events are properly serialized for client (the existing serialization support is used, so the answer should be ‘yes’, but - famous last words…)
From the user perspective, I assume people would prefer to query this information via function name identical to one in the contract, e.g. Chain.spend and such, as transfer_value is internal (Erlang’s function name doing the actual change).
I guess we shouldn’t expect (non-erlang) users doing this translation or look for some additional mapping in the documentation…
Ulf has updated the PR to expose chain events in contract calls. It is now awaiting reviews. Some comments posted in the AE forum will be considered as well.
Investigations into the sync process has revealed the need for parallel evaluation of transactions. Although quite tricky, since preserving the order of accesses to the shared block state is crucial, it’s worth evaluating. Ulf is debugging a prototype implementation, but no firm results yet.
@karol.chain this is a good idea, although transfer_value in particular is a bit special: it’s the optional value part of a contract call transaction. What should we call that? @hanssv.chain, any ideas?
Call.amount sounds like a good enough name… Remember there could be a number of them in a single contract call, as remote calls can have their own amounts attached to them!
Ulf completed and merged the PR exposing chain events during contract evaluation. He started working on parallel evaluation of transactions, which is a very complex task, but could yield significant speedup, especially during sync. He also started looking into upgrading rocksdb to the latest version, as the erlang support library merged the changes needed to support OTP 23. Time spent: ca 37 hours.
Dimitar identified two issues in the peer propagation and dead peers detection. Those are fixed in the corresponding PR. Thanks to @gorbak25 there are real life dashboards of two nodes syncing: one with the changes applied, and another without them. What stands out is that even provided with tons of unverified peers, the node recovers and those do not flood in the verified pool of peers. On the contrary, verified peers are aggressively checked and downgraded. Although there is a significant improvement of the outgoing connections, it is yet to be investigated why those do not reach the limit provided (100). Dimitar also spent some time working on persistence of peers. Time spent: 41.3 hours
Ulf spent most of last week working on the parallel eval of txs (#3355), but also moved the rocksdb upgrade forward (#3113). It should be ready to merge today. Time spent: 35.5 hrs
Dimitar spent some time on persistence of peers. After some data had been aggregated regarding the improvement of peer handling last week, did some debugging based on that. Eventually with some help of @gorbak25 found yet another bug - there are duplicating entries for the same peers. Spent some time fixing that, not ready yet. Time spent: 38.6 hours
The Rocksdb upgrade PR ran into some CI-related issues, but has now been merged. Ulf spent most of his time working on the parallel evaluation of transactions. Time spent: 32.5 hours
Finished the clean up of duplicating peers. Further improvement of the handling of peers had been tested and implemented. This shall finish the dead peers issue. Dimitar spent some time on persistence of peers. Time spent 40 hours.
Ulf participated in PR reviews, and continued working on parallel evaluation of transactions. He also implemented support for passing configuration values via OS environment variables to ease testing and deployment (Issue #3298). The PR is ready for approvals. Time spent: 41 hours.
Dimitar is doing a massive refactoring of the peer pool handling. This is not ready yet and once done would make peer support easier. This will unlock the peer persistence changes. Time spent: 40 hours.
Thanks to the Core Dev Team for the improvement of the node. The core dev contracts will we extended for the next months. @Hyperchain Team Thank you for testing/improving the node! @gorbak25 Thank you for coordinating the work between the hyperchain and core dev team.
A new release roadmap for the both teams will be presented soon.
Ulf merged support for configuring Aeternity nodes via OS environment variables, and continued working on parallel evaluation of transactions. Time spent: 36.5 hrs
Ulf worked on the parallel evaluation of transactions, and started focusing on improving the presentation of trace output, not least to make Merkle Patricia Trees more readable. Time spent 41 hours.
Ulf mostly completed the initial work on parallel evaluation of transactions. There is now a PR available for review. The code is run in the aehttp_contracts_SUITE and appears to work. More testing is required to find out how the implementation performs on real-world data, but initial small-scale performance testing looks promising. Time spent: ca 40 hrs