It’s at least partially my fault that there have been few updates in the recent weeks as I have been usually doing them, but have been off for summer vacation for over 2 weeks. I should have still maintained the usual pace of updates to not leave this gap in information I guess.
@diegop already provided you with lots of valuable information regarding the status and reasoning behind it. Let me give you some more insights, with a bit more technical detail.
Threshold ECDSA
As Diego has already mentioned, one of the big items here is to increase our assurance of correctness of the implementation. We have already done one external round of code reviews with a world-leading code audit company. We are planning to do another round when the changes that we still want to implement are complete. This will be again with a top-notch external review firm. And of course we will be doing lots of testing on our own.
In addition to these assurance-related efforts, we still need to work on improving the performance of the implementation. We are currently running the system with the test key on a 13-node subnet. For the production key, we decided to start with a 34-node subnet for the security / decentralization we want to have. This has a major implication on performance, i.e., it will be quite a bit slower there. In order to reach, what we think is an acceptable level of performance, we need to put some more thinking and engineering effort into getting good-enough performance on such larger subnet.
Bitcoin
You were asking about the tasks that remain to be done for the Bitcoin integration part. What Diego means with security improvements are some very specific protections mostly agains very powerful adversaries. One could consider most of the possible attacks to be theoretical, but we are paranoid and want those to not be possible at all.
One of the larger items in our backlog is one huge performance improvement. I need to give some details to explain this: The system tracks UTXOs in a UTXO set, but it provides the capability to resolve forks. Thus, it needs to keep a number of blocks that are not yet absorbed into the UTXO set as they might be on the wrong branch of a fork. Only once we are sufficiently sure that a block is not in a wrong branch of a fork, e.g., after hours worth of blocks, a block gets “absorbed” into the UTXO set by adding the UTXOs its transactions create and removing the ones they consume from our UTXO set. Queries thus need to query the UTXO set and all “pending” blocks towards the chain tip of the Bitcoin blockchain which may be dozens depending on how conservative we are. This is currently not implemented very efficiently for the Testnet release and needs to be sped up to have acceptable performance for the Bitcoin Mainnet release.
Also, as has been mentioned multiple times in this and other forum topics, projects like the Bitcoin integration are really hard to plan precisely because it’s all new and has never been done before. Clearly, it might be possible to plan more thoroughly and spend more energy on this, but this would partially contradict the idea of an agile software process which we follow at DFINITY quite rigorously. And in an agile process, you cannot give planning figures like in a waterfall process, particularly when the work is as exploratory as for Bitcoin and threshold ECDSA.
Also, we expect some minor bug reports from the community related to our Bitcoin Testnet operation which we will fix as they come in.
Hope this explains a bit better what is happening on the technical front.